This allows to ask gitk to recompute the list of patches to show at
every refresh. Before this, we had problems with 'stg-gitk --all':
- deleting a patch that was existing at startup time would trigger an
"unknown ref" error from gitk and force to quit/restart manually;
- patches created since startup were only visible when applied, or
when below one of the startup patches.
Note that --argscmd is not in official gitk yet, so we don't try to
use it if it's not available.
Signed-off-by: Yann Dirson <ydirson@altern.org>
# patch logs.
# LIMITATIONS:
# patch logs.
# LIMITATIONS:
-# - asking gitk to "update" won't detect any new ref
# - no support for spaces in branch names
# Copyright (c) 2007 Yann Dirson <ydirson@altern.org>
# - no support for spaces in branch names
# Copyright (c) 2007 Yann Dirson <ydirson@altern.org>
-case "$1" in
---all) allbranches=1; shift ;;
---*) usage ;;
-*) break ;;
-esac
+refsonly=0
+while [ "$#" -gt 0 ]; do
+ case "$1" in
+ --refs) refsonly=1 ;;
+ --all) allbranches=1 ;;
+ --*) usage ;;
+ *) break ;;
+ esac
+ shift
+done
if [ $allbranches = 1 ] && [ "$#" -gt 0 ]; then
usage
if [ $allbranches = 1 ] && [ "$#" -gt 0 ]; then
usage
-gitk $(find $refdirs -type f -not -name '*.log' | cut -c${GIT_DIR_SPKIPLEN}- )
+printrefs()
+{
+ find $refdirs -type f -not -name '*.log' | cut -c${GIT_DIR_SPKIPLEN}-
+}
+
+if [ $refsonly = 1 ]; then
+ printrefs
+elif grep -q -- --argscmd $(which gitk); then
+ # This gitk supports --argscmd.
+ # Let's use a hack to pass --all, which was consumed during command-line parsing
+ if [ $allbranches = 1 ]; then
+ gitk --argscmd="$0 --refs --all"
+ else
+ gitk --argscmd="$0 --refs $*"
+ fi
+else
+ # This gitk does not support --argscmd, just compute refs onces
+ gitk $(printrefs)
+fi