Browse Source

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>
maint
Junio C Hamano 18 years ago
parent
commit
b4d2b04c9b
  1. 3
      git-gui/.gitignore
  2. 46
      git-gui/GIT-VERSION-GEN
  3. 48
      git-gui/Makefile
  4. 44
      git-gui/TODO
  5. 5924
      git-gui/git-gui.sh

3
git-gui/.gitignore vendored

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
GIT-VERSION-FILE
git-citool
git-gui

46
git-gui/GIT-VERSION-GEN

@ -0,0 +1,46 @@ @@ -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

@ -0,0 +1,48 @@ @@ -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

@ -0,0 +1,44 @@ @@ -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

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save