diff options
-rwxr-xr-x | commit | 6 | ||||
-rwxr-xr-x | hit | 2 | ||||
-rwxr-xr-x | rcommit (renamed from rsup) | 0 | ||||
-rwxr-xr-x | scommit | 83 | ||||
l---------[-rwxr-xr-x] | sup | 85 |
5 files changed, 88 insertions, 88 deletions
@@ -55,7 +55,7 @@ function is_git { return else ( cd "$1" && $GIT status &> /dev/null ) - + if [ "$?" != "128" ]; then return else @@ -68,13 +68,13 @@ function is_git { function is_svn { # simple svn folder checker # usage: is_svn <folder> - + if [ -d "$1/.svn" ]; then return else return 1 fi -} +} # Push to repositories function git_push { @@ -12,7 +12,7 @@ # * Check proper user/email config. # * Automatically set git-flow when initializing a repository. # * Automatically set git-hooks integration. -# * Allow hook whitelisting. +# * Allow for hook access control list (i.e, which hooks are allowed). # * Implement global hooks like using a global init.templateDir config. # * Check remote configuration. # * Check hook tampering before doing anything in the repository, like removing hook permissions. @@ -0,0 +1,83 @@ +#!/bin/bash +# +# Commit submodule changes +# +# Usage: +# +# 1. From a submodule folder: +# +# scommit # go the upward repo and commit +# +# 2. From the top-level git repo: +# +# scommit <submodule> +# +# Usage in an alternative design: +# +# 1. From a submodule folder: +# +# scommit # go the upward repo and commit +# +# 2. From the top-level git repo: +# +# scommit # detect changed submodules +# scommit <submodule1> [..<submoduleN>] + +# Parameters +DIRNAME="`dirname $0`" +BASENAME="`basename $0`" +PROJECT="$1" +GIT="hit" + +# Check each file at the the submodule registry +#function sup_registry { +# $GIT status --short | grep -v "??" | awk '{ print $2 }' | while read module; do +# if grep -q "\[submodule \"$module\"\]" .gitmodules; then +# true +# fi +# done +#} + +# Check if it is a git repository, and wheter we're in the top of it +if [ ! -d ".git" ]; then + echo "$BASENAME: not a git repository, or not in the top-level of that repository" + exit 1 +fi + +# Remove trailing slash from project name +PROJECT="`echo "$PROJECT" | sed -e 's|/$||'`" + +# Check if param is a project +if [ ! -z "$PROJECT" ]; then + # Check if project is a registered submodule + if ! grep -q "\[submodule \"$PROJECT\"\]" .gitmodules; then + echo "$BASENAME: not a submodule: $PROJECT" + exit 1 + fi + + # Check if it has changes to be commited + #if ! $GIT status --short $PROJECT | grep -q "^[AM]"; then + # echo "$BASENAME: not changes to be commited for $PROJECT" + # exit 1 + #fi + + # Work with cached version only + #COMMIT="`$GIT diff --cached $PROJECT | grep '^\+Subproject commit ' | cut -d ' ' -f 3`" + #LOG="`cd $PROJECT &> /dev/null && git log -1 --oneline $COMMIT`" + + # Always work with the latest commit + $GIT add $PROJECT + LOG="`cd $PROJECT &> /dev/null && git log -1 --oneline`" + + MESSAGE="Updates $PROJECT: $LOG" + $DIRNAME/commit $MESSAGE +else + # Get log + LOG="`git log -1 --oneline`" + BASE="$(basename `pwd`)" + MESSAGE="Updates $BASE: $LOG" + + # Got upward and commit + #( cd .. &> /dev/null && $GIT add $BASE && $DIRNAME/commit "$MESSAGE" ) + ( cd .. &> /dev/null && $GIT add -f $BASE && $DIRNAME/commit "$MESSAGE" ) +fi @@ -1,84 +1 @@ -#!/bin/bash -# -# Commit submodule changes -# -# Usage: -# -# 1. From a submodule folder: -# -# sup # go the upward repo and commit -# -# 2. From the top-level git repo: -# -# sup <submodule> -# -# Usage in an alternative design: -# -# 1. From a submodule folder: -# -# sup # go the upward repo and commit -# -# 2. From the top-level git repo: -# -# sup # detect changed submodules -# sup <submodule1> [..<submoduleN>] -# - -# Parameters -DIRNAME="`dirname $0`" -BASENAME="`basename $0`" -PROJECT="$1" -GIT="hit" - -# Check each file at the the submodule registry -#function sup_registry { -# $GIT status --short | grep -v "??" | awk '{ print $2 }' | while read module; do -# if grep -q "\[submodule \"$module\"\]" .gitmodules; then -# true -# fi -# done -#} - -# Check if it is a git repository, and wheter we're in the top of it -if [ ! -d ".git" ]; then - echo "$BASENAME: not a git repository, or not in the top-level of that repository" - exit 1 -fi - -# Remove trailing slash from project name -PROJECT="`echo "$PROJECT" | sed -e 's|/$||'`" - -# Check if param is a project -if [ ! -z "$PROJECT" ]; then - # Check if project is a registered submodule - if ! grep -q "\[submodule \"$PROJECT\"\]" .gitmodules; then - echo "$BASENAME: not a submodule: $PROJECT" - exit 1 - fi - - # Check if it has changes to be commited - #if ! $GIT status --short $PROJECT | grep -q "^[AM]"; then - # echo "$BASENAME: not changes to be commited for $PROJECT" - # exit 1 - #fi - - # Work with cached version only - #COMMIT="`$GIT diff --cached $PROJECT | grep '^\+Subproject commit ' | cut -d ' ' -f 3`" - #LOG="`cd $PROJECT &> /dev/null && git log -1 --oneline $COMMIT`" - - # Always work with the latest commit - $GIT add $PROJECT - LOG="`cd $PROJECT &> /dev/null && git log -1 --oneline`" - - MESSAGE="Updates $PROJECT: $LOG" - $DIRNAME/commit $MESSAGE -else - # Get log - LOG="`git log -1 --oneline`" - BASE="$(basename `pwd`)" - MESSAGE="Updates $BASE: $LOG" - - # Got upward and commit - #( cd .. &> /dev/null && $GIT add $BASE && $DIRNAME/commit "$MESSAGE" ) - ( cd .. &> /dev/null && $GIT add -f $BASE && $DIRNAME/commit "$MESSAGE" ) -fi +scommit
\ No newline at end of file |