Commit Graph

12646 Commits

Author SHA1 Message Date
Michele Ballabio
a5d4101537 git-reflog: document --verbose
Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 21:10:54 -04:00
Kristof Provost
a2a9150bf0 makefile: Add a cscope target
The current makefile supports ctags but not cscope. Some people prefer
cscope (I do), so this patch adds a cscope target.

I've also added cscope* to the .gitignore file. For some reason tags
and TAGS weren't in there either so I've added them too.

Signed-off-by: Kristof Provost <Kristof@provost-engineering.be>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 21:09:15 -04:00
Gerrit Pape
1ae14a6b52 git-config: handle --file option with relative pathname properly
When calling git-config not from the top level directory of a repository,
it changes directory before trying to open the config file specified
through the --file option, which then fails if the config file was
specified by a relative pathname.  This patch adjusts the pathname to
the config file if applicable.

The problem was noticed by Joey Hess, reported through
 http://bugs.debian.org/445208

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 21:07:38 -04:00
Johannes Schindelin
60fcc2e6ce clear_commit_marks(): avoid deep recursion
Before this patch, clear_commit_marks() recursed for each parent.  This
could be potentially very expensive in terms of stack space.  Probably
the only reason that this did not lead to problems is the fact that we
typically call clear_commit_marks() after marking a relatively small set
of commits.

Use (sort of) a tail recursion instead: first recurse on the parents
other than the first one, and then continue the loop with the first
parent.

Noticed by Shawn Pearce.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 21:05:22 -04:00
Jean-Luc Herren
7b40a4552a git add -i: Remove unused variables
Signed-off-by: Jean-Luc Herren <jlh@gmx.ch>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 21:00:40 -04:00
Jean-Luc Herren
7288ed8ebd git add -i: Fix parsing of abbreviated hunk headers
The unified diff format allows one-line ranges to be abbreviated
by omiting the size.  The hunk header "@@ -10,1 +10,1 @@" can be
expressed as "@@ -10 +10 @@", but this wasn't properly parsed in
all cases.

Such abbreviated hunk headers are generated when a one-line change
(add, remove or modify) appears without context; for example
because the file is a one-liner itself or because GIT_DIFF_OPTS
was set to '-u0'.  If the user then runs 'git add -i' and enters
the 'patch' command for that file, perl complains about undefined
variables.

Signed-off-by: Jean-Luc Herren <jlh@gmx.ch>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 21:00:40 -04:00
Frank Lichtenheld
a72c874e43 git-config: don't silently ignore options after --list
Error out if someone gives options after --list since that is
not a valid syntax.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:54:42 -04:00
Brandon Casey
729f50453c git-gc --auto: simplify "repack" command line building
Since "-a" is removed from the base repack command line,
we can simplify how we add additional options to this
command line when using --auto.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:50:05 -04:00
Brandon Casey
edb0e04e81 git-gc: by default use safer "-A" option to repack when not --prune'ing
This makes use of repack's new "-A" option which does not drop packed
unreachable objects. This makes git-gc safe to call at any time,
particularly when a repository is referenced as an alternate by
another repository.

git-gc --prune will use the "-a" option to repack instead of "-A", so
that packed unreachable objects will be removed.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:50:05 -04:00
Väinö Järvelä
f539d0d6c1 Added a test for fetching remote tags when there is not tags.
When a user runs "git fetch -t", git crashes when it doesn't find any
tags on the remote repository.

Signed-off-by: Väinö Järvelä <v@pp.inet.fi>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:40:51 -04:00
Alex Riesen
8f70a7657a Fix a crash in ls-remote when refspec expands into nothing
Originally-by: Väinö Järvelä <v@pp.inet.fi>
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:40:50 -04:00
Daniel Barkalow
2467a4fa03 Remove duplicate ref matches in fetch
If multiple refspecs matched the same ref, the update would be
processed multiple times. Now having the same destination for the same
source has no additional effect, and having the same destination for
different sources is an error.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:28:06 -04:00
Alex Riesen
2f27f8509e fix t5403-post-checkout-hook.sh: built-in test in dash does not have "=="
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:26:01 -04:00
Linus Torvalds
304b5af64f Clean up "git log" format with DIFF_FORMAT_NO_OUTPUT
This fixes an unnecessary empty line that we add to the log message when
we generate diffs, but don't actually end up printing any due to having
DIFF_FORMAT_NO_OUTPUT set.

This can happen with pickaxe or with rename following. The reason is that
we normally add an empty line between the commit and the diff, but we do
that even for the case where we've then suppressed the actual printing of
the diff.

This also updates a couple of tests that assumed the extraneous empty
line would exist at the end of output.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:24:27 -04:00
Linus Torvalds
99516e35d0 Fix embarrassing "git log --follow" bug
It turns out that I completely broke "git log --follow" with my recent
patch to revision.c ("Fix revision log diff setup, avoid unnecessary diff
generation", commit b7bb760d5e).

Why? Because --follow obviously requires the diff machinery to function,
exactly the same way pickaxe does.

So everybody is away right now, but considering that nobody even noticed
this bug, I don't think it matters. But for the record, here's the trivial
one-liner fix (well, two, since I also fixed the comment).

Because of the nature of the bug, if you ask for patches when following
(which is one of the things I normally do), the bug is hidden, because
then the request for diff output will automatically also enable the diffs
themselves.

So while "git log --follow <filename>" didn't work, adding a "-p"
magically made it work again even without this fix.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-15 20:15:58 -04:00
Shawn O. Pearce
8621581248 git-gui: Honor a config.mak in git-gui's top level
I keep forgetting to include TCLTK_PATH when I build git-gui on some
systems.  Placing that rule (among others) into a config.mak makes it
easier to compile the application the same way every time.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-13 22:14:14 -04:00
Shawn O. Pearce
82dd4e0465 git-gui: Collapse $env(HOME) to ~/ in recent repositories on Windows
Apparently native Tcl/Tk on Windows is using \ as the return value
from [file separator] but [file normalize] on that same system is
using / rather than \ to represent a directory separator.  I really
think that is nuts, but its what is happening.

So we can actually just hardcode our separator to / as all systems
we support (Windows, Mac OS X, UNIX) use /.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 23:07:59 -04:00
Shawn O. Pearce
ba6c761e62 git-gui: Support cloning Cygwin based work-dirs
If the user tries to clone a Git repository that is actually a
workdir of another repository (by way of contrib git-new-workdir)
then the contents of .git is a series of Windows .lnk files which
Tcl can't read if this is a native Tcl process.  To read the real
objects directory we need to resolve the link to that location.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 23:07:58 -04:00
Shawn O. Pearce
51a41ac4ef git-gui: Use proper Windows shortcuts instead of bat files
On Windows its better to use a shortcut (.lnk file) over a batch
script (.bat) as we can specify the icon file for the .lnk and
thus have these git specific objects appear on the desktop with
that git specific icon file.

Unfortunately the authors of Tcl did not bless us with the APIs
needed to create shortcuts from within Tcl.  But Microsoft did
give us Windows Scripting Host which allows us to execute some
JavaScript that calls some sort of COM object that can operate
on a .lnk file.

We now build both Cygwin and non-Cygwin "desktop icons" as proper
Windows .lnk files, using the "Start in" property of these files
to indicate the working directory of the repository the user wants
to launch.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 23:07:58 -04:00
Shawn O. Pearce
d6db1ad51a git-gui: Ensure copyright message is correctly read as UTF-8
On Windows using the native Tcl/Tk the copyright header is
being read from the script using the system encoding, which
may not be utf-8.  This causes the multi-byte copyright symbol
(which is actually encoded as utf-8) to read as two characters
and not as a proper copyright symbol.  Explicitly asking Tcl
to read this sequence of bytes as utf-8 corrects the issue.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 23:06:36 -04:00
Shawn O. Pearce
914c4d4dcd git-gui: Bind n/c/o accelerators in repository chooser
On Windows we need to actually setup binds for the accelerator
keys, otherwise the OS doesn't respond to them when the user
presses the key combinations.  Apparently we automatically get
these on Mac OS X when we configure the menu commands, but not
on Windows.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 23:05:59 -04:00
Shawn O. Pearce
28d1b11a11 git-gui: Disable the text widget in the repository chooser
Although we are using a text widget here we really do not
want the end-user to be able to modify the text it displays.
So we need to disable it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 23:05:59 -04:00
Shawn O. Pearce
580b73de25 git-gui: Fix bind errors when switching repository chooser panels
We need to remove any variable traces we may have installed
when the panel is destroyed as the trace may attempt to use
a widget that no longer exists on this panel.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 23:05:59 -04:00
Shawn O. Pearce
9c1b1b1e45 git-gui: Offer repository management features in menu bar
When we show the repository chooser as the primary toplevel (".") we
now offer the major choices not just on the window as hyperlinks but
they also now are shown in the Repository menu, including the recent
repository list.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 01:56:06 -04:00
Shawn O. Pearce
28e86952dd git-gui: Change repository browser radio buttons to hyperlinks
Making a user click twice to select which action they want to perform
when starting git-gui is just wasting their time.  Clicking once on a
radio button and then clicking again on the "Next >" button is quite
unnecessary.

Since the recent repository list is shown as a list of hyperlinks we
now offer the 3 basic startup actions as hyperlinks.  Clicking on a
link will immediately jump to the next UI panel, saving the user time
as they don't need to click an additional button.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 01:34:36 -04:00
Steffen Prohaska
24f7c64b21 git-gui: offer a list of recent repositories on startup
If git-gui is started outside a work tree the repository chooser
will offer a list of recently opened repositories.  Clicking on
any list entry directly opens the repository.

The list of recently opened repositories is stored in the config
as the multi-valued option gui.recentrepo. If the list grows beyond
10 entries it will be truncated by removing one of the older entries.

Only repositories that are opened through the repository chooser
will get added to the recent list.  Repositories opened from the
shell will not yet be added to the recent list, as users are likely
to have a way to easily return to the same directory via their shell.

[sp: This is actually a combined work from both Steffen and myself.
     Most of the ideas are Steffen's, as is the basic outline of
     the code, but any outstanding bugs are entirely my fault.]

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 01:13:55 -04:00
Shawn O. Pearce
85f7a94b3c git-gui: Support LFs embedded in config file values
Using the new --null option added to git-config in git 1.5.3 we
can safely accept LFs that are embedded in configuration options.
This does require a completely different configuration file parser
then the pre 1.5.3 version as we are splitting on very different
values.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 00:54:15 -04:00
Shawn O. Pearce
f00d504a6f git-gui: Refactor git-config --list parsing
The parsing for the output of `git config --list` is the same for
both the global options and the current repository's options so we
can really just use the same parser between them.

I'm currently just refactoring the parser so we can use a different
one depending on the version of git available to us at runtime.  My
next change will add support for 1.5.3's --null option.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 00:42:17 -04:00
Shawn O. Pearce
69f85ffaa2 git-gui: Move load_config procedure below git-version selection
To better handle configuration options that contain LFs in their
values we want to use the new -z option available in git-config
version 1.5.3 and later.  To configure load_config based upon the
git version we need to move thos below the git-version computation.

No logic changes yet, just a minor reordering of the code.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 00:34:04 -04:00
Johannes Sixt
a0592d3f57 git-gui: Change main window layout to support wider screens
The layout is changed to have the file lists at the left (Unstaged
Changes at the top, Staged Changes below it) and the diff window
at the right (with the commit area below it).

  +----------+---------------------+
  | Unstaged |  Diff area          |
  |          |                     |
  |          |                     |
  |          |                     |
  +----------+                     |
  | Staged   |                     |
  |          +---------------------+
  |          |  Commit area        |
  |          |                     |
  +----------+---------------------+

The advantages are:

  - The height of the file lists can be adjusted independently to
    fit the files that they contain.
  - The diff viewer is higher.

On wide screens it is ok that the main window is now generally
wider, too.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 00:14:33 -04:00
Michele Ballabio
4dcf4e0ed4 git-gui: update Italian translation
An Italian glossary was also added. Some changes:
 * commit (verb): (creare una) nuova revisione
 * commit (noun): revisione
 * checkout: attivazione
 * tracking branch: duplicato locale di ramo remoto
 * repository: archivio
 * some terms are used with more consistency

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-12 00:12:07 -04:00
Shawn O. Pearce
57364320bf git-gui: Updated po strings based on current sources 2007-10-10 04:11:43 -04:00
Steffen Prohaska
99fe594d96 git-gui: add mingw specific startup wrapper
The wrapper adds the directory it is installed in to PATH.
This is required for the git commands implemented in shell.
git-gui fails to launch them if PATH is not modified.

The wrapper script also accepts an optional command line
switch '--working-dir <dir>' and changes to <dir> before
launching the actual git-gui. This is required to implement
the "Git Gui Here" Explorer shell extension.

As a last step the original git-gui script is launched,
which is expected to be located in the same directory
under the name git-gui.tcl.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 03:50:01 -04:00
Steffen Prohaska
a16b74e72c git-gui: set NO_MSGFMT to force using pure tcl replacement in msysgit
Shawn's git-gui Makefile supports the pure tcl replacement
for msgfmt if setting NO_MSGFMT. This patch sets the NO_MSGFMT
for msysgit.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 03:47:38 -04:00
Steffen Prohaska
be700fe30f git-gui: add directory git-gui is located in to PATH (on Windows)
This commit modifies PATH to include a good guess where git
could be found. The first location to search for executable is
the directory git-gui is installed in. This is a good guess for
a sane installation.

Even if git is not available in PATH, git-gui is now able
to find it. Hence git-gui can be passed to wish as an absolute
path without caring about the environment.

We must modify PATH to be able to spawn shell based git commands.
For builtins it would be sufficient to located them and execute
them with their absolute path. But for shell based git commmands
PATH needs to be modified.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 02:26:00 -04:00
Shawn O. Pearce
3ea16e569a Merge branch 'cs/de'
* cs/de:
  git-gui: Update German translation, including latest glossary changes
  git-gui: Incorporate glossary changes into existing German translation
  git-gui: Update German glossary according to mailing list discussion
  git-gui: Add more words to translation glossary
2007-10-10 01:23:23 -04:00
Christian Stimming
1d6e05f6bd git-gui: Update German translation, including latest glossary changes 2007-10-10 01:20:31 -04:00
Christian Stimming
aad2dc2763 git-gui: Incorporate glossary changes into existing German translation 2007-10-10 01:20:20 -04:00
Christian Stimming
becfb01553 git-gui: Update German glossary according to mailing list discussion 2007-10-10 01:20:04 -04:00
Christian Stimming
2ce3755a55 git-gui: Add more words to translation glossary 2007-10-10 01:19:48 -04:00
Shawn O. Pearce
c73ce762f0 git-gui: Shorten the staged/unstaged changes title bar text
The titles for the staged and unstaged areas were usually opening
up too narrow by default, causing the text to be clipped by Tcl as
it tried to center the text in the middle of the available area.
This meant that users who were new to git-gui did not get to see
the entire header and may be unclear about what the different lists
are.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 01:12:18 -04:00
Shawn O. Pearce
13824e2df2 git-gui: Bind Cmd-, to Preferences on Mac OS X
A Mac OS X UI convention is to have Cmd-, be the accelerator key
for the preferences window, which by convention is located in the
apple menu under a separator below the about command.  We also now
call this "Preferences..." as that is the conventional term used
in English.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 01:12:18 -04:00
Shawn O. Pearce
6bdf5e5f20 git-gui: Consolidate the Fetch and Push menus into a Remote menu
Sometimes the Fetch menu looks really odd, such as if you are in a
repository that has no remotes configured when you start git-gui.
Here we didn't have any items to add to the Fetch menu so it was a
tad confusing for the end-user to see an empty menu on the menu bar.

We now place all of the commands related to fetching and pushing of
changes into a single "Remote" menu.  This way we have a better class
of bucket that we can drop additional remote related items into such
as doing a remote merge or editing the remote configuration specs.

The shortcuts to execute fetch/remote prune/push on existing remote
specifications are now actually submenus listing the remotes by name.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 01:12:17 -04:00
Shawn O. Pearce
1cad232f92 git-gui: Use progress meter in the status bar during index updates
If we are updating the index to stage or unstage changes or reverting
files in the working directory we can use the progress handling parts
of our status bar to perform this display work, reducing the amount of
code duplication we have in the index handling module.

Unfortunately the status bar is still a strict approximation as it is
unable to know when git-update-index has processed the data we fed to
it.  The progress bar is actually a progress of the pipe buffer filling
up in the OS, not of the actual work done.  Still, it tells the user we
are working and that has some value.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 01:12:17 -04:00
Shawn O. Pearce
51e1eadb7c git-gui: Include our Git logo in the about dialog
Most applications tend to have some sort of pretty image in the
about dialog, because it spruces the screen up a little bit and
makes the user happy about reading the information shown there.
We already have a logo in the repository selection wizard so we
can easily reuse this in the about dialog.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 01:12:16 -04:00
Shawn O. Pearce
68099eeeed git-gui: Refactor about dialog code into its own module
The about dialog is getting somewhat long in size and will probably
only get more complex as I try to improve upon its display.  As the
options dialog is even more complex than the about dialog we move
the about dialog into its own module to reduce the complexity of the
option dialog module.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 01:12:16 -04:00
Shawn O. Pearce
281fdf6921 git-gui: Refactor Henrik Nyh's logo into its own procedure
By moving the logo into its own procedure we can use it in
multiple locations within the UI, but still load it only if
the logo is going to be used by the application.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-10 01:12:15 -04:00
Shawn O. Pearce
b7d68258a3 Merge branch 'maint'
* maint:
  git-gui: accept versions containing text annotations, like 1.5.3.mingw.1
2007-10-10 01:09:41 -04:00
Steffen Prohaska
96f11953c0 git-gui: accept versions containing text annotations, like 1.5.3.mingw.1
This commit teaches git-gui to accept versions with annotations
that start with text and optionally end with a dot followed by
a number.

This is needed by the current versioning scheme of msysgit,
which uses versions like 1.5.3.mingw.1. However, the changes
is not limited to this use case. Any version of the form
<numeric version>.<anytext>.<number> would be parsed and only
the starting <numeric version> used for validation.

[sp: Minor edit to remove unnecessary group matching]

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-10-07 17:15:27 -07:00
Paul Mackerras
8d73b242a5 gitk: Get rid of the diffopts variable
The only thing that could be specified with diffopts was the number
of lines of context, but there is already a spinbox for that.  So
this gets rid of it.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2007-10-06 20:22:00 +10:00