diff options
-rwxr-xr-x | commit | 67 |
1 files changed, 61 insertions, 6 deletions
@@ -3,23 +3,77 @@ # Commit both on git and svn # +# Get the absolute folder from a file +# Usage: absolute_folder <file> +function absolute_folder { + + local file="$1" cwd + + if [ -e "$file" ]; then + cwd="`pwd`" + cd `dirname $file` + pwd + cd $cwd + fi + +} + +# Check if a file is inside a git repository +# Usage: git_folder <file> +function git_folder { + + local file="$1" folder folders dir_list cwd + + if [ -e "$file" ]; then + folder="`absolute_folder $file`" + fi + + if [ -d "$folder/.git" ]; then + GIT_FOLDER="$folder" + return + fi + + # reverse folder order + dir_list="`echo $folder | tr '/' ' '`" + for i in $dir_list; do + folders="$i $folders" + done + + cwd="`pwd`" + cd $folder + +echo folders: $folders + for i in $folders; do + cd .. + if [ -d "$(pwd)/.git" ]; then + cd $cwd + GIT_FOLDER="$(pwd)" + return true + fi + done + + cd $cwd + return 1 + +} + # Check if a folder is inside a git repository function is_git { # simple git folder checker # usage: is_git <folder> if [ -z "$1" ]; then - false + return 1 elif [ ! -d "$1" ]; then - false + return 1 elif [ -d "$1/.git" ]; then - true + return else ( cd "$1" && git status &> /dev/null ) if [ "$?" != "128" ]; then - true + return else - false + return 1 fi fi } @@ -49,7 +103,7 @@ function git_push { # Check user information function git_user { - if ! grep -q "^\[user\]" .git/config; then + if ! grep -q "^\[user\]" $GIT_FOLDER/.git/config; then echo "No user configuration section found in the repository." echo "This might be a privacy issue" @@ -70,6 +124,7 @@ if [ ! -z "$1" ]; then fi if is_git .; then + git_folder $(pwd) git_user git commit -a -m "$*" git_push |