Browse Source
This merges git-gui project of Shawn as a subproject of git.git at git-gui/ subdirectory. This merge only melds two histories together. The toplevel Makefile does not even know about git-gui yet. Signed-off-by: Junio C Hamano <junkio@cox.net>maint

5 changed files with 6065 additions and 0 deletions
@ -0,0 +1,46 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
GVF=GIT-VERSION-FILE |
||||||
|
DEF_VER=v0.5.GIT |
||||||
|
|
||||||
|
LF=' |
||||||
|
' |
||||||
|
|
||||||
|
# First try git-describe, then see if there is a version file |
||||||
|
# (included in release tarballs), then default |
||||||
|
if VN=$(git describe --abbrev=4 HEAD 2>/dev/null) && |
||||||
|
case "$VN" in |
||||||
|
*$LF*) (exit 1) ;; |
||||||
|
v[0-9]*) : happy ;; |
||||||
|
esac |
||||||
|
then |
||||||
|
VN=$(echo "$VN" | sed -e 's/-/./g'); |
||||||
|
elif test -f version |
||||||
|
then |
||||||
|
VN=$(cat version) || VN="$DEF_VER" |
||||||
|
else |
||||||
|
VN="$DEF_VER" |
||||||
|
fi |
||||||
|
|
||||||
|
VN=$(expr "$VN" : v*'\(.*\)') |
||||||
|
|
||||||
|
dirty=$(sh -c 'git diff-index --name-only HEAD' 2>/dev/null) || dirty= |
||||||
|
case "$dirty" in |
||||||
|
'') |
||||||
|
;; |
||||||
|
*) |
||||||
|
VN="$VN-dirty" ;; |
||||||
|
esac |
||||||
|
|
||||||
|
if test -r $GVF |
||||||
|
then |
||||||
|
VC=$(sed -e 's/^GIT_VERSION = //' <$GVF) |
||||||
|
else |
||||||
|
VC=unset |
||||||
|
fi |
||||||
|
test "$VN" = "$VC" || { |
||||||
|
echo >&2 "GIT_VERSION = $VN" |
||||||
|
echo "GIT_VERSION = $VN" >$GVF |
||||||
|
} |
||||||
|
|
||||||
|
|
@ -0,0 +1,48 @@ |
|||||||
|
all:: |
||||||
|
|
||||||
|
GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE |
||||||
|
@$(SHELL_PATH) ./GIT-VERSION-GEN |
||||||
|
-include GIT-VERSION-FILE |
||||||
|
|
||||||
|
SCRIPT_SH = git-gui.sh |
||||||
|
GITGUI_BUILT_INS = git-citool |
||||||
|
ALL_PROGRAMS = $(GITGUI_BUILT_INS) $(patsubst %.sh,%,$(SCRIPT_SH)) |
||||||
|
|
||||||
|
ifndef SHELL_PATH |
||||||
|
SHELL_PATH = /bin/sh |
||||||
|
endif |
||||||
|
|
||||||
|
gitexecdir := $(shell git --exec-path) |
||||||
|
INSTALL = install |
||||||
|
|
||||||
|
DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) |
||||||
|
gitexecdir_SQ = $(subst ','\'',$(gitexecdir)) |
||||||
|
|
||||||
|
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) |
||||||
|
|
||||||
|
$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh |
||||||
|
rm -f $@ $@+ |
||||||
|
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ |
||||||
|
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ |
||||||
|
$@.sh >$@+ |
||||||
|
chmod +x $@+ |
||||||
|
mv $@+ $@ |
||||||
|
|
||||||
|
$(GITGUI_BUILT_INS): git-gui |
||||||
|
rm -f $@ && ln git-gui $@ |
||||||
|
|
||||||
|
# These can record GIT_VERSION |
||||||
|
$(patsubst %.sh,%,$(SCRIPT_SH)): GIT-VERSION-FILE |
||||||
|
|
||||||
|
all:: $(ALL_PROGRAMS) |
||||||
|
|
||||||
|
install: all |
||||||
|
$(INSTALL) -d -m755 '$(DESTDIR_SQ)$(gitexecdir_SQ)' |
||||||
|
$(INSTALL) git-gui '$(DESTDIR_SQ)$(gitexecdir_SQ)' |
||||||
|
$(foreach p,$(GITGUI_BUILT_INS), rm -f '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git-gui' '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;) |
||||||
|
|
||||||
|
clean:: |
||||||
|
rm -f $(ALL_PROGRAMS) GIT-VERSION-FILE |
||||||
|
|
||||||
|
.PHONY: all install clean |
||||||
|
.PHONY: .FORCE-GIT-VERSION-FILE |
@ -0,0 +1,44 @@ |
|||||||
|
Items outstanding: |
||||||
|
|
||||||
|
* Add file to .gitignore or info/excludes. |
||||||
|
|
||||||
|
* Populate the pull menu with local branches. |
||||||
|
|
||||||
|
* Make use of the new default merge data stored in repo-config. |
||||||
|
|
||||||
|
* Checkout a different local branch. |
||||||
|
|
||||||
|
* Push any local branch to a remote branch. |
||||||
|
|
||||||
|
* Merge any local branches through a real merge UI. |
||||||
|
|
||||||
|
* Allow user to define keyboard shortcuts for frequently used fetch |
||||||
|
or merge operations. Or maybe just define a keyboard shortcut |
||||||
|
for default fetch/default merge of current branch is enough; |
||||||
|
but I do know a few users who merge a couple of common branches |
||||||
|
also into the same branch so one default isn't quite enough. |
||||||
|
|
||||||
|
* Better organize fetch/push/pull console windows. |
||||||
|
|
||||||
|
* Clone UI (to download a new repository). |
||||||
|
|
||||||
|
* Remotes editor (for .git/config format only). |
||||||
|
|
||||||
|
* Show a shortlog of the last couple of commits in the main window, |
||||||
|
to give the user warm fuzzy feelings that we have their data |
||||||
|
saved. Actually this may be the set of commits not yet in |
||||||
|
the upstream (aka default merge branch remote repository). |
||||||
|
|
||||||
|
* GUI configuration editor for options listed in |
||||||
|
git.git/Documentation/config.txt. Ideally this would |
||||||
|
parse that file and generate the options dialog from |
||||||
|
the documentation itself, and include the help text |
||||||
|
from the documentation as part of the UI somehow. |
||||||
|
|
||||||
|
Known bugs: |
||||||
|
|
||||||
|
* git-gui sometimes just closes on Windows with no error message. |
||||||
|
I'm not sure what the problem is here. I suspect the wish |
||||||
|
process is just terminating due to a segfault or something, |
||||||
|
as the do_quit proc in git-gui doesn't run. It often seems to |
||||||
|
occur while writing a commit message in the buffer. Odd. |
Loading…
Reference in new issue