diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2017-10-05 11:34:00 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2017-10-05 11:34:00 -0300 |
commit | 5e8992fa950206127230595234de0b866e5229f4 (patch) | |
tree | efa7baa40a328a9f00a8aa892ca3037235ae3fb6 | |
parent | 859a0f0fa4f2a1ca968277227639e5917ae7e372 (diff) | |
download | utils-git-5e8992fa950206127230595234de0b866e5229f4.tar.gz utils-git-5e8992fa950206127230595234de0b866e5229f4.tar.bz2 |
Adds sup
-rwxr-xr-x | sup | 83 |
1 files changed, 83 insertions, 0 deletions
@@ -0,0 +1,83 @@ +#!/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 +if [ ! -d ".git" ]; then + echo "$BASENAME: not a git 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" ) +fi |