Revert "Merge pull request #89 from fidian/optimize-vcs-type"

This reverts commit 082809bab2, reversing
changes made to 33429b3ca6.
This commit is contained in:
tlimoncelli@stackexchange.com
2015-06-16 17:11:22 -04:00
parent 082809bab2
commit 4466c202fb
4 changed files with 62 additions and 37 deletions

View File

@@ -17,36 +17,45 @@
: "${EDITOR:=vi}" ; : "${EDITOR:=vi}" ;
# Set REPOBASE to the top of the repository # Outputs a string that is the base directory of this VCS repo.
# Set VCS_TYPE to 'git', 'hg', 'svn' or 'unknown' # By side-effect, sets the variable VCS_TYPE to either 'git', 'hg',
if git rev-parse --show-toplevel >/dev/null 2>&1 ; then # 'svn' or 'unknown'.
VCS_TYPE=git function _determine_vcs_base_and_type() {
REPOBASE=$(git rev-parse --show-toplevel) if git rev-parse --show-toplevel 2>/dev/null ; then
elif [ -d ".svn" ] ; then VCS_TYPE=git
# Find topmost dir with .svn sub-dir elif [ -d ".svn" ] ; then
parent="" #find topmost dir with .svn sub-dir
grandparent="." parent=""
while [ -d "$grandparent/.svn" ]; do grandparent="."
parent=$grandparent mydir="$(pwd)"
grandparent="$parent/.." while [ -d "$grandparent/.svn" ]; do
done parent=$grandparent
grandparent="$parent/.."
done
REPOBASE=$(cd "$parent" ; pwd) if [ ! -z "$parent" ]; then
VCS_TYPE=svn cd "$parent"
elif hg root >/dev/null 2>&1 ; then pwd
# NOTE: hg has to be tested last because it always "succeeds". else
VCS_TYPE=hg exit 1
REPOBASE=$(hg root 2>/dev/null) fi
else cd "$mydir"
# We aren't in a repo at all. Assume the cwd is the root VCS_TYPE=svn
# of the tree. elif hg root 2>/dev/null ; then
VCS_TYPE=unknown # NOTE: hg has to be tested last because it always "succeeds".
REPOBASE="$(pwd)" VCS_TYPE=hg
fi else
export VCS_TYPE # We aren't in a repo at all. Assume the cwd is the root
# FIXME: Verify this function by checking for .hg or .git # of the tree.
# after determining what we believe to be the answer. echo .
VCS_TYPE=unknown
fi
export VCS_TYPE
# FIXME: Verify this function by checking for .hg or .git
# after determining what we believe to be the answer.
}
REPOBASE=$(_determine_vcs_base_and_type)
KEYRINGDIR="$REPOBASE/$BLACKBOXDATA" KEYRINGDIR="$REPOBASE/$BLACKBOXDATA"
BB_ADMINS_FILE="blackbox-admins.txt" BB_ADMINS_FILE="blackbox-admins.txt"
BB_ADMINS="${KEYRINGDIR}/${BB_ADMINS_FILE}" BB_ADMINS="${KEYRINGDIR}/${BB_ADMINS_FILE}"
@@ -82,6 +91,7 @@ function fail_if_not_exists() {
# Exit we we aren't in a VCS repo. # Exit we we aren't in a VCS repo.
function fail_if_not_in_repo() { function fail_if_not_in_repo() {
_determine_vcs_base_and_type
if [[ $VCS_TYPE = "unknown" ]]; then if [[ $VCS_TYPE = "unknown" ]]; then
echo "ERROR: This must be run in a VCS repo: git, hg, or svn." >&2 echo "ERROR: This must be run in a VCS repo: git, hg, or svn." >&2
echo Exiting... >&2 echo Exiting... >&2
@@ -269,6 +279,10 @@ function enumerate_subdirs() {
# chdir to the base of the repo. # chdir to the base of the repo.
function change_to_vcs_root() { function change_to_vcs_root() {
if [[ $REPOBASE = '' ]]; then
echo 'ERROR: _determine_vcs_base_and_type failed to set REPOBASE.'
exit 1
fi
cd "$REPOBASE" cd "$REPOBASE"
} }
@@ -331,9 +345,18 @@ function md5sum_file() {
# Abstract the difference between git and hg: # Abstract the difference between git and hg:
# #
# Are we in git, hg, or unknown repo?
function which_vcs() {
if [[ $VCS_TYPE = '' ]]; then
_determine_vcs_base_and_type >/dev/null
fi
echo "$VCS_TYPE"
}
# Is this file in the current repo? # Is this file in the current repo?
function is_in_vcs() { function is_in_vcs() {
is_in_$VCS_TYPE "$@" is_in_$(which_vcs) "$@"
} }
# Mercurial # Mercurial
function is_in_hg() { function is_in_hg() {
@@ -387,7 +410,7 @@ function is_in_unknown() {
# Add a file to the repo (but don't commit it). # Add a file to the repo (but don't commit it).
function vcs_add() { function vcs_add() {
vcs_add_$VCS_TYPE "$@" vcs_add_$(which_vcs) "$@"
} }
# Mercurial # Mercurial
function vcs_add_hg() { function vcs_add_hg() {
@@ -413,7 +436,7 @@ function vcs_add_unknown() {
# Commit a file to the repo # Commit a file to the repo
function vcs_commit() { function vcs_commit() {
vcs_commit_$VCS_TYPE "$@" vcs_commit_$(which_vcs) "$@"
} }
# Mercurial # Mercurial
function vcs_commit_hg() { function vcs_commit_hg() {
@@ -440,7 +463,7 @@ function vcs_commit_unknown() {
# Remove file from repo, even if it was deleted locally already. # Remove file from repo, even if it was deleted locally already.
# If it doesn't exist yet in the repo, it should be a no-op. # If it doesn't exist yet in the repo, it should be a no-op.
function vcs_remove() { function vcs_remove() {
vcs_remove_$VCS_TYPE "$@" vcs_remove_$(which_vcs) "$@"
} }
# Mercurial # Mercurial
function vcs_remove_hg() { function vcs_remove_hg() {
@@ -468,7 +491,7 @@ function vcs_remove_unknown() {
function vcs_ignore() { function vcs_ignore() {
local file local file
for file in "$@"; do for file in "$@"; do
vcs_ignore_$VCS_TYPE "$file" vcs_ignore_$(which_vcs) "$file"
done done
} }
# Mercurial # Mercurial
@@ -509,7 +532,7 @@ function vcs_ignore_generic_file() {
function vcs_notice() { function vcs_notice() {
local file local file
for file in "$@"; do for file in "$@"; do
vcs_notice_$VCS_TYPE "$file" vcs_notice_$(which_vcs) "$file"
done done
} }
# Mercurial # Mercurial

View File

@@ -9,6 +9,7 @@
set -e set -e
blackbox_home=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) blackbox_home=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source "${blackbox_home}/_blackbox_common.sh" source "${blackbox_home}/_blackbox_common.sh"
_determine_vcs_base_and_type
unencrypted_file=$(get_unencrypted_filename "$1") unencrypted_file=$(get_unencrypted_filename "$1")
encrypted_file=$(get_encrypted_filename "$1") encrypted_file=$(get_encrypted_filename "$1")
@@ -31,4 +32,4 @@ vcs_remove "$BB_FILES"
vcs_commit "Removing from blackbox: ${unencrypted_file}" vcs_commit "Removing from blackbox: ${unencrypted_file}"
echo "========== UPDATING VCS: DONE" echo "========== UPDATING VCS: DONE"
echo "Local repo updated. Please push when ready." echo "Local repo updated. Please push when ready."
echo " $VCS_TYPE push" echo " $(which_vcs) push"

View File

@@ -47,4 +47,4 @@ vcs_add "$BB_FILES" "$encrypted_file"
vcs_commit "registered in blackbox: ${unencrypted_file}" "$BB_FILES" "$encrypted_file" vcs_commit "registered in blackbox: ${unencrypted_file}" "$BB_FILES" "$encrypted_file"
echo "========== UPDATING VCS: DONE" echo "========== UPDATING VCS: DONE"
echo "Local repo updated. Please push when ready." echo "Local repo updated. Please push when ready."
echo " $VCS_TYPE push" echo " $(which_vcs) push"

View File

@@ -60,6 +60,7 @@ while IFS= read <&99 -r unencrypted_file; do
done 99<"$BB_FILES" done 99<"$BB_FILES"
vcs_commit 'Re-encrypted keys' vcs_commit 'Re-encrypted keys'
VCSCMD=$(which_vcs)
echo '========== DONE.' echo '========== DONE.'
echo 'Likely next step:' echo 'Likely next step:'
echo " $VCS_TYPE push" echo " ${VCSCMD} push"