From 0c3886df6525f631b50274f77b7c5563822ad213 Mon Sep 17 00:00:00 2001 From: bendra Date: Wed, 15 Oct 2014 11:01:52 -0700 Subject: [PATCH] inital checkin of svn support --- .gitignore | 3 +++ bin/_blackbox_common.sh | 31 +++++++++++++++++++++++++++++-- bin/blackbox_initialize | 24 +++++++++++++++++------- 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 03b2136..f2d9497 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ __pycache__/ # C extensions *.so +# backup shell files +*~ + # Distribution / packaging .Python env/ diff --git a/bin/_blackbox_common.sh b/bin/_blackbox_common.sh index 5c26371..216b227 100755 --- a/bin/_blackbox_common.sh +++ b/bin/_blackbox_common.sh @@ -14,10 +14,13 @@ # Outputs a string that is the base directory of this VCS repo. # By side-effect, sets the variable VCS_TYPE to either 'git', 'hg', -# or 'unknown'. +# 'svn' or 'unknown'. function _determine_vcs_base_and_type() { if git rev-parse --show-toplevel 2>/dev/null ; then VCS_TYPE=git + elif [ -d ".svn" ] ; then + echo `pwd` + VCS_TYPE=svn elif hg root 2>/dev/null ; then # NOTE: hg has to be tested last because it always "succeeds". VCS_TYPE=hg @@ -69,7 +72,7 @@ function fail_if_not_exists() { function fail_if_not_in_repo() { _determine_vcs_base_and_type if [[ $VCS_TYPE = "unknown" ]]; then - echo "ERROR: This must be run in a VCS repo such as git or hg." + echo "ERROR: This must be run in a VCS repo: git, hg, or svn." echo Exiting... exit 1 fi @@ -302,6 +305,17 @@ function is_in_git() { echo false fi } +# Subversion +function is_in_svn() { + local filename + filename="$1" + + if svn list "$filename" ; then + echo true + else + echo false + fi +} # Add a file to the repo (but don't commit it). @@ -316,6 +330,10 @@ function vcs_add_hg() { function vcs_add_git() { git add """$@""" } +# Subversion +function vcs_add_svn() { + svn add --parents """$@""" +} # Commit a file to the repo @@ -330,6 +348,11 @@ function vcs_commit_hg() { function vcs_commit_git() { git commit -m"""$@""" } +# Subversion +function vcs_commit_svn() { + svn commit -m"""$@""" +} + # Remove file from repo, even if it was deleted locally already. @@ -345,3 +368,7 @@ function vcs_remove_hg() { function vcs_remove_git() { git rm --ignore-unmatch -f -- """$@""" } +# Subversion +function vcs_remove_svn() { + svn delete """$@""" +} diff --git a/bin/blackbox_initialize b/bin/blackbox_initialize index 1b1ce9c..80b88ef 100755 --- a/bin/blackbox_initialize +++ b/bin/blackbox_initialize @@ -24,14 +24,24 @@ fi echo cd "$REPOBASE" cd "$REPOBASE" -# Update .gitignore or .hgignore +echo VCS_TYPE: $VCS_TYPE -IGNOREFILE=".${VCS_TYPE}ignore" -if ! grep -sx >/dev/null 'pubring.gpg~' "$IGNOREFILE" ; then - echo 'pubring.gpg~' >>"$IGNOREFILE" -fi -if ! grep -sx >/dev/null 'secring.gpg' "$IGNOREFILE" ; then - echo 'secring.gpg' >>"$IGNOREFILE" +if [[ $VCS_TYPE = "git" || $VCS_TYPE = "hg" ]]; then + # Update .gitignore or .hgignore + + IGNOREFILE=".${VCS_TYPE}ignore" + if ! grep -sx >/dev/null 'pubring.gpg~' "$IGNOREFILE" ; then + echo 'pubring.gpg~' >>"$IGNOREFILE" + fi + if ! grep -sx >/dev/null 'secring.gpg' "$IGNOREFILE" ; then + echo 'secring.gpg' >>"$IGNOREFILE" + fi +elif [[ $VCS_TYPE = "svn" ]]; then + # add file to svn ignore propset + IGNOREFILE=""; + svn propset svn:ignore 'pubring.gpg~ +secring.gpg' . + svn commit -m "ignore file list" fi # Make directories