mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
Merge git-gui
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>
This commit is contained in:
commit
b4d2b04c9b
3
git-gui/.gitignore
vendored
Normal file
3
git-gui/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
GIT-VERSION-FILE
|
||||
git-citool
|
||||
git-gui
|
46
git-gui/GIT-VERSION-GEN
Executable file
46
git-gui/GIT-VERSION-GEN
Executable file
|
@ -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
|
||||
}
|
||||
|
||||
|
48
git-gui/Makefile
Normal file
48
git-gui/Makefile
Normal file
|
@ -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
|
44
git-gui/TODO
Normal file
44
git-gui/TODO
Normal 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.
|
5924
git-gui/git-gui.sh
Executable file
5924
git-gui/git-gui.sh
Executable file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue