aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcommit67
1 files changed, 61 insertions, 6 deletions
diff --git a/commit b/commit
index 3e417d2..a113432 100755
--- a/commit
+++ b/commit
@@ -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