There's one piece of this that requires a cooperating
repository. Specifically, nogit really wants a merge with no input
required from the user. The "union" merge driver does what we want
here, (putting lines from both sides into the files without conflict
markers). The only trick is that there's no way (that I've found at
least) to request this merge driver from the command line of the "git
merge" invocation. Instead, we need a .gitattributes file to specify
"merge=union".
So, for now, we're relying on the repository being used with nogit to
provide a working .gitattributes file that specifies "merge=union" for
all appropriate paths.
nogit_sync()
{
- echo "Internal error: 'nogit sync' not yet implemented"
+ # First commit any locally modified nogit files
+ GIT_DIR=$NOGIT_DIR git commit -a -m "nogit-sync commit" >/dev/null 2>&1 || true
+
+ # Then, fetch and merge any upstream changes
+ GIT_DIR=$NOGIT_DIR git fetch >/dev/null 2>&1
+ GIT_DIR=$NOGIT_DIR git merge -m "nogit-sync merge" >/dev/null 2>&1
+
+ # Finally, push any new commits up to the upstream repository
+ GIT_DIR=$NOGIT_DIR git push >/dev/null 2>&1
+
+ echo "Completed nogit sync"
}
if [ $# -lt 1 ]; then