Code

git.git
17 years agocleanup unpack-trees.c: shrink struct tree_entry_list
René Scharfe [Tue, 24 Jul 2007 21:54:25 +0000 (23:54 +0200)]
cleanup unpack-trees.c: shrink struct tree_entry_list

Remove the two write-only fields executable and symlink from struct
tree_entry_list.  Also replace usage of the field directory with
S_ISDIR checks on the mode field, and then remove this now obsolete
field, too.  Noticed by David Kastrup.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agofilter-branch: fix dash complaining about "Missing '))'"
René Scharfe [Tue, 24 Jul 2007 21:29:29 +0000 (23:29 +0200)]
filter-branch: fix dash complaining about "Missing '))'"

On e.g. Ubuntu, dash is used as /bin/sh.  Unlike bash it parses
commands like

  a=$((echo stuff) | wc)

as an arithmetic expression while what we want is a subshell inside
a command substitution.  Resolve the ambiguity by placing a space
between the two opening parentheses.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: More detailed error messages for snapshot format
Jakub Narebski [Tue, 24 Jul 2007 23:19:58 +0000 (01:19 +0200)]
gitweb: More detailed error messages for snapshot format

Improve error messages for snapshot format in git_snapshot:
distinguish between situation where snapshots are turned off, where
snapshot format ('sf') parameter is invalid, where given snapshot
format does not exist in %known_snapshot_formats hash, and where
gitweb was given unsupported snapshot format.

While at it, use first from all supported snapshots format as default,
if no snapshot format was provided.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit.el: Support for incremental status updates.
Alexandre Julliard [Tue, 24 Jul 2007 10:12:47 +0000 (12:12 +0200)]
git.el: Support for incremental status updates.

When we know which files have been modified, we can now run diff-index
or ls-files with a file list to refresh only the specified files
instead of the whole project.

This also allows proper refreshing of files upon add/delete/resolve,
instead of making assumptions about the new file state.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agouser-manual: fix typolets.
Junio C Hamano [Tue, 24 Jul 2007 08:58:51 +0000 (01:58 -0700)]
user-manual: fix typolets.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMark user-manual as UTF-8
Junio C Hamano [Tue, 24 Jul 2007 07:46:35 +0000 (00:46 -0700)]
Mark user-manual as UTF-8

There have been several complaints against k.org's user-manual
page.  The document is generated in ISO-8859-1 by the xsltproc
toolchain (I suspect this is because released docbook.xsl we use
has xsl:output element that says the output is ISO-8859-1) but
server delivers it with "charset=UTF-8", and all h*ll breaks
loose.

This attempts to force UTF-8 on the generating end.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoTeach revision machinery about --no-walk
Johannes Schindelin [Mon, 23 Jul 2007 23:38:40 +0000 (00:38 +0100)]
Teach revision machinery about --no-walk

The flag "no_walk" is present in struct rev_info since a long time, but
so far has been in use exclusively by "git show".

With this flag, you can see all your refs, ordered by date of the last
commit:

$ git log --abbrev-commit --pretty=oneline --decorate --all --no-walk

which is extremely helpful if you have to juggle with a lot topic
branches, and do not remember in which one you introduced that uber
debug option, or simply want to get an overview what is cooking.

(Note that the "git log" invocation above does not output the same as

 $ git show --abbrev-commit --pretty=oneline --decorate --all --quiet

 since "git show" keeps the alphabetic order that "--all" returns the
 refs in, even if the option "--date-order" was passed.)

For good measure, this also adds the "--do-walk" option which overrides
"--no-walk".

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agofilter-branch: Big syntax change; support rewriting multiple refs
Johannes Schindelin [Mon, 23 Jul 2007 17:34:13 +0000 (18:34 +0100)]
filter-branch: Big syntax change; support rewriting multiple refs

We used to take the first non-option argument as the name for the new
branch.  This syntax is not extensible to support rewriting more than just
HEAD.

Instead, we now have the following syntax:

git filter-branch [<filter options>...] [<rev-list options>]

All positive refs given in <rev-list options> are rewritten.  Yes,
in-place.  If a ref was changed, the original head is stored in
refs/original/$ref now, for your inspecting pleasure, in addition to the
reflogs (since it is easier to inspect "git show-ref | grep original" than
to inspect all the reflogs).

This commit also adds the --force option to remove .git-rewrite/ and all
refs from refs/original/ before filtering.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agorebase -i: exchange all "if [ .. ]" by "if test .."
Johannes Schindelin [Tue, 24 Jul 2007 02:18:28 +0000 (03:18 +0100)]
rebase -i: exchange all "if [ .. ]" by "if test .."

This patch is literally

:%s/if \[ *\(.*[^ ]\) *\]/if test \1/

in vi, after making sure that the other instances of "[..]" are not
actually invocations of "test".

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoShut "git rebase -i" up when no --verbose was given
Johannes Schindelin [Mon, 23 Jul 2007 22:45:49 +0000 (23:45 +0100)]
Shut "git rebase -i" up when no --verbose was given

Up to now, git rebase -i was quite chatty, showing through all the
nice core programs it called.

Now it only shows a progress meter by default.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agomailinfo: fix 'fatal: cannot convert from utf-8 to utf-8'
Johannes Schindelin [Tue, 24 Jul 2007 00:03:26 +0000 (01:03 +0100)]
mailinfo: fix 'fatal: cannot convert from utf-8 to utf-8'

For some reason, I got this error message.  Maybe it does not make sense,
but then we should not really try to convert the text when it is not
necessary.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitk: Wait for the window to become visible after creating it
Paul Mackerras [Mon, 23 Jul 2007 11:35:03 +0000 (21:35 +1000)]
gitk: Wait for the window to become visible after creating it

When the git log process returned an error immediately, we were
sometimes getting no main window and no error window displayed,
with the gitk process just hanging waiting for something.  It appears
that the tkwait in show_error, which waits for the error window to
be destroyed, wasn't sufficient to allow the main window or the error
window to be mapped.

This adds a wait in the main startup code after the main window
has been created to wait until it is visible.  This seems to fix the
problem.

Signed-off-by: Paul Mackerras <paulus@samba.org>
17 years agogit-gui: Avoid unnecessary symbolic-ref call during checkout
Shawn O. Pearce [Sun, 22 Jul 2007 08:49:06 +0000 (04:49 -0400)]
git-gui: Avoid unnecessary symbolic-ref call during checkout

If we are checking out the branch we are already on then there is no
need to call symbolic-ref to update the HEAD pointer to the "new"
branch name, it is already correct.

Currently this situation does not happen very often, but it can be
seen in some workflows where the user always recreates their local
branch from a remote tracking branch and more-or-less ignores what
branch he/she is on right now.  As they say, ignorance is bliss.

This case will however become a tad more common when we overload
checkout_op to actually also perform all of our merges.  In that
case we will likely see that the branch we want to "checkout" is
the current branch, as we are actually just merging into it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Refactor current branch menu items to make i18n easier
Shawn O. Pearce [Mon, 23 Jul 2007 05:11:08 +0000 (01:11 -0400)]
git-gui: Refactor current branch menu items to make i18n easier

The i18n team has also identified a rather ugly block of code in
git-gui that is used to make a pair of Repository menu items show
the current branch name.  This code is difficult to convert to use
[mc ...] to lookup the translation, so I'm refactoring it into a
procedure.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Refactor diff popup into a procedure to ease i18n work
Shawn O. Pearce [Mon, 23 Jul 2007 04:36:39 +0000 (00:36 -0400)]
git-gui: Refactor diff popup into a procedure to ease i18n work

The folks working on the i18n version of git-gui have had some
trouble trying to convert these English strings into [mc] calls
due to the double evaluation.  Moving this block into a standard
procedure eliminates the double evaluation, making their work
easier.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Paper bag fix quitting crash after commit
Shawn O. Pearce [Mon, 23 Jul 2007 04:20:04 +0000 (00:20 -0400)]
git-gui: Paper bag fix quitting crash after commit

My earlier introduction of the GITGUI_BCK file (which saves the user's
commit message buffer while they are typing it) broke the Quit function.
If the user makes a commit we delete the GITGUI_BCK file; if they then
immediately quit the application we fail to rename the GITGUI_BCK file
to GITGUI_MSG.  This is because the file does not exist, but our flag
still says it does.  The root cause is we did not unset the flag during
commit.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Clarify meaning of add tracked menu option
Shawn O. Pearce [Mon, 23 Jul 2007 04:12:30 +0000 (00:12 -0400)]
git-gui: Clarify meaning of add tracked menu option

Junio recently pointed out on the mailing list that our "Add Existing"
feature is a lot like `git add -u`, which is generally described as
"(Re)Add Tracked Files".  This came up during discussion of how to
translate "Add Existing" into Japanese, as the individual working on
the translation was not quite sure what the option meant and therefore
had some trouble selecting the best translation.

I'm changing the menu option to "Add Tracked Files To Commit" and the
button to "Add Tracked".  This should help new users to better understand
the actions behind those GUI widgets.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogitweb: Fix support for legacy gitweb config for snapshots
Jakub Narebski [Sun, 22 Jul 2007 21:41:20 +0000 (23:41 +0200)]
gitweb: Fix support for legacy gitweb config for snapshots

Earlier commit which cleaned up snapshot support and introduced
support for multiple snapshot formats changed the format of
$feature{'snapshot'}{'default'} (gitweb configuration) and
gitweb.snapshot configuration variable (repository configuration).
It supported old gitweb.snapshot values of 'gzip', 'bzip2' and 'zip'
and tried to support, but failed to do that, old values of
$feature{'snapshot'}{'default'}; at least those corresponding to
old gitweb.snapshot values of 'gzip', 'bzip2' and 'zip', i.e.
  ['x-gzip', 'gz', 'gzip']
  ['x-bzip2', 'bz2', 'bzip2']
  ['x-zip', 'zip', '']

This commit moves legacy configuration support out of feature_snapshot
subroutine to separate filter_snapshot_fmts subroutine. The
filter_snapshot_fmts is used on result on result of
gitweb_check_feature('snapshot').  This way feature_snapshot deals
_only_ with repository config.

As a byproduct you can now use 'gzip' and 'bzip2' as aliases to 'tgz'
and 'tbz2' also in $feature{'snapshot'}{'default'}, not only in
gitweb.snapshot.

While at it do some whitespace cleanup: use tabs for indent, but
spaces for align.

Noticed-by: Matt McCutchen <hashproduct@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Tested-by: Matt McCutchen <hashproduct@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agofsck --lost-found: write blob's contents, not their SHA-1
Johannes Schindelin [Sun, 22 Jul 2007 20:20:26 +0000 (21:20 +0100)]
fsck --lost-found: write blob's contents, not their SHA-1

When looking for a lost blob, it is much nicer to be able to grep
through .git/lost-found/other/* than to write an inefficient loop
over the file names.  So write the contents of the dangling blobs,
not their object names.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years ago[PATCH] gitk: Bind keyboard actions to the command key on Mac OS
Shawn O. Pearce [Thu, 19 Jul 2007 04:37:58 +0000 (00:37 -0400)]
[PATCH] gitk: Bind keyboard actions to the command key on Mac OS

git-gui already uses the command key for accelerators, but gitk has
never done so.  I'm actually finding it very hard to move back and
forth between the two applications as git-gui is following the Mac
OS X conventions and gitk is not.

This trick is the same one that git-gui uses to determine which
key to bind actions to.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
17 years ago[PATCH] gitk: Ignore ctrl-z as EOF on windows
Mark Levedahl [Tue, 17 Jul 2007 22:42:04 +0000 (18:42 -0400)]
[PATCH] gitk: Ignore ctrl-z as EOF on windows

Cygwin's Tcl is configured to honor any occurence of ctrl-z as an
end-of-file marker, while some commits in the git repository and possibly
elsewhere include that character in the commit comment. This causes gitk
ignore commit history following such a comment and incorrect graphs. This
change affects only Windows as Tcl on other platforms already has
eofchar == {}. This fixes problems noted by me and by Ray Lehtiniemi, and
the fix was suggested by Shawn Pierce.

Signed-off-by: Mark Levedahl <mdl123@verizon.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
17 years agogitk: Make the fake commit for the index changes green rather than magenta
Paul Mackerras [Sun, 22 Jul 2007 12:05:30 +0000 (22:05 +1000)]
gitk: Make the fake commit for the index changes green rather than magenta

The magenta was a bit close in color to the normal blue commits.  This
makes them green instead as suggested by Linus.

Signed-off-by: Paul Mackerras <paulus@samba.org>
17 years agoAvoid to duplicate commit message when is not encoded
Marco Costalba [Sun, 22 Jul 2007 08:23:05 +0000 (10:23 +0200)]
Avoid to duplicate commit message when is not encoded

When a commit message doesn't have encoding information
and encoding output is utf-8 (default) then an useless
xstrdup() of commit message is done.

If we assume most of users live in an utf-8 world, this
useless copy is the common case.

Performance issue found with KCachegrind.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoSynonyms: -i == --regexp-ignore-case, -E == --extended-regexp
Junio C Hamano [Sun, 22 Jul 2007 06:18:33 +0000 (23:18 -0700)]
Synonyms: -i == --regexp-ignore-case, -E == --extended-regexp

These options to log family were too long to type.  Give them
shorter synonyms.

Fix the parsing of the long options while at it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-gui: Fix unnecessary fast-forward during checkout
Shawn O. Pearce [Sun, 22 Jul 2007 08:09:53 +0000 (04:09 -0400)]
git-gui: Fix unnecessary fast-forward during checkout

If we are trying to checkout a local branch which is matched to a
remote tracking branch, but the local branch is newer than the remote
tracking branch we actually just want to switch to the local branch.
The local branch is "Already up to date".

Unfortunately we tossed away the local branch's commit SHA-1 and kept
the remote tracking branch's SHA-1, which meant that the user lost the
local changes when we updated the working directory.  At least we did
not update the local branch ref, so the user's data was still intact.

We now toss the tracking branch's SHA-1 and replace with the local
branch's SHA-1 before the checkout, ensuring that we pass of the right
tree to git-read-tree when we update the working directory.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Completely remove my Tools/Migrate hack
Shawn O. Pearce [Sat, 21 Jul 2007 20:32:42 +0000 (16:32 -0400)]
git-gui: Completely remove my Tools/Migrate hack

This menu option of Tools/Migrate has been living inside of git-gui
as a local hack to support some coworkers of mine.  It has no value
to anyone outside of my day-job team and never really should have
been in a release version of git-gui.  So I'm pulling it out, so
that nobody else has to deal with this garbage.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoDocumentation/gitignore.txt: Fix the seriously misleading priority explanation
David Kastrup [Sat, 21 Jul 2007 23:53:49 +0000 (01:53 +0200)]
Documentation/gitignore.txt: Fix the seriously misleading priority explanation

Signed-off-by: David Kastrup <dak@gnu.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoFix VISUAL/EDITOR preference order in Documentation/config.txt.
Junio C Hamano [Sun, 22 Jul 2007 05:37:56 +0000 (22:37 -0700)]
Fix VISUAL/EDITOR preference order in Documentation/config.txt.

I screwed up when amending ef0c2abf.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb: snapshot cleanups & support for offering multiple formats
Matt McCutchen [Sat, 21 Jul 2007 23:30:27 +0000 (01:30 +0200)]
gitweb: snapshot cleanups & support for offering multiple formats

- Centralize knowledge about snapshot formats (mime types, extensions,
  commands) in %known_snapshot_formats and improve how some of that
  information is specified.  In particular, zip files are no longer a
  special case.

- Add support for offering multiple snapshot formats to the user so
  that he/she can download a snapshot in the format he/she prefers.
  The site-wide or project configuration now gives a list of formats
  to offer, and if more than one format is offered, the "_snapshot_"
  link becomes something like "snapshot (_tar.bz2_ _zip_)".

- If only one format is offered, a tooltip on the "_snapshot_" link
  tells the user what it is.

- Fix out-of-date "tarball" -> "archive" in comment.

Alert for gitweb site administrators: This patch changes the format of
$feature{'snapshot'}{'default'} in gitweb_config.perl from a list of
three pieces of information about a single format to a list of one or
more formats you wish to offer from the set ('tgz', 'tbz2', 'zip').
Update your gitweb_config.perl appropriately.  There was taken care
for old-style gitweb configuration to work as it used to, but this
backward compatibility works only for the values which correspond to
gitweb.snapshot values of 'gzip', 'bzip2' and 'zip', i.e.
  ['x-gzip', 'gz', 'gzip']
  ['x-bzip2', 'bz2', 'bzip2']
  ['x-zip', 'zip', '']

The preferred names for gitweb.snapshot in repository configuration
have also changed from 'gzip' and 'bzip2' to 'tgz' and 'tbz2', but
the old names are still recognized for compatibility.

Signed-off-by: Matt McCutchen <hashproduct@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agorebase -i: call editor just once for a multi-squash
Johannes Schindelin [Sat, 21 Jul 2007 17:09:41 +0000 (18:09 +0100)]
rebase -i: call editor just once for a multi-squash

Sometimes you want to squash more than two commits.  Before this patch,
the editor was fired up for each squash command.  Now the editor is
started only with the last squash command.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-gui: Internally allow fetch without storing for future pull support
Shawn O. Pearce [Fri, 20 Jul 2007 08:10:13 +0000 (04:10 -0400)]
git-gui: Internally allow fetch without storing for future pull support

This is actually just an underlying code improvement that has no user
visible component yet.  UI improvements to actually fetch and merge via
an arbitrary remote with no tracking branches must still follow to make
this change useful for the end-user.

Our tracking branch specifications are a Tcl list of three components:

  - local tracking branch name
  - remote name/url
  - remote branch name/tag name

This change just makes the first element optional.  If it is an empty
string we will run the fetch, but have the value be saved only into the
special .git/FETCH_HEAD, where we can pick it up and use it for this one
time operation.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Skip unnecessary read-tree work during checkout
Shawn O. Pearce [Fri, 20 Jul 2007 07:56:06 +0000 (03:56 -0400)]
git-gui: Skip unnecessary read-tree work during checkout

I totally missed this obvious optimization in the checkout code path.
If our current repository HEAD is actually at the commit we are moving
to, and we agreed to perform this switch earlier, then we have no files
to update in the working directory and any stale mtimes are simply not
of consequence right now.  We can pretend like we ran a read-tree and
skip right into the post-read-tree work, such as updating the branch
and setting the symbolic-ref.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Simplify error case for unsupported merge types
Shawn O. Pearce [Fri, 20 Jul 2007 07:37:43 +0000 (03:37 -0400)]
git-gui: Simplify error case for unsupported merge types

If we are given a merge type we don't understand in checkout_op there
is probably a bug in git-gui somewhere that allowed this unknown merge
strategy to come into this part of the code path.  We currently only
recognize three merge types ('none', 'ff' and 'reset') but are going
to be supporting more in the future.  Rather than keep editing this
message I'm going with a very generic "Uh, we don't do that!" type of
error.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Factor out common fast-forward merge case
Shawn O. Pearce [Fri, 20 Jul 2007 07:34:56 +0000 (03:34 -0400)]
git-gui: Factor out common fast-forward merge case

In both the ff and reset merge_types supported by checkout_op the
result is the same if the merge base of our target commit and the
existing commit is the existing commit: its a fast-forward as the
existing commit is fully contained in the target commit.

This minor cleanup in logic will make it easier to implement a
new kind of merge_type that actually merges the two trees with a
real merge strategy, such as git-merge-recursive.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Save the merge base during checkout_op processing
Shawn O. Pearce [Fri, 20 Jul 2007 06:13:24 +0000 (02:13 -0400)]
git-gui: Save the merge base during checkout_op processing

I've decided to teach checkout_op how to perform more than just a
fast-forward and reset type of merge.  This way we can also do a full
recursive merge even when we are recreating an existing branch from
a remote.  To help with that process I'm saving the merge-base we
computed during the ff/reset/fail decision process, in case we need
it later on when we actually start a true merge operation.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Automatically backup the user's commit buffer
Shawn O. Pearce [Sat, 21 Jul 2007 08:57:57 +0000 (04:57 -0400)]
git-gui: Automatically backup the user's commit buffer

A few users have been seeing crashes in Tk when using the undo key
binding to undo the last few keystroke events in the commit buffer.
Unfortunately that means the user loses their commit message and
must start over from scratch when the user restarts the process.

git-gui now saves the user's commit message buffer every couple of
seconds to a temporary file under .git (specifically .git/GITGUI_BCK).
At exit time we rename this file to .git/GITGUI_MSG if there is a
message, the file exists, and it is currently synchronized with the
Tk buffer.  Otherwise we do our usual routine of saving the Tk buffer
to .git/GITGUI_MSG and delete .git/GITGUI_BCK, if it exists.

During startup we favor .git/GITGUI_BCK over .git/GITGUI_MSG.  This
way a crash doesn't take out the user's message buffer but instead
will cause the user to lose only a few keystrokes.  Most people do
not type more than 200 WPM, and with 30 possible saves per minute
we are unlikely to lose more than 7 words.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoFix up duplicate parents removal
Linus Torvalds [Sat, 21 Jul 2007 06:11:19 +0000 (23:11 -0700)]
Fix up duplicate parents removal

This removes duplicate parents properly, making gitk happy again.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogitweb cleanup: Move @diff_opts declaration earlier
Jakub Narebski [Fri, 20 Jul 2007 00:15:09 +0000 (02:15 +0200)]
gitweb cleanup: Move @diff_opts declaration earlier

Move @diff_opts declaration earlier, so that all gitweb options are
together (and not separated by %feature hash and some subroutines),
with the exception of $GITWEB_CONFIG which must be after all option
variables including %feature hash.

While at it, in the moved comment, note that diff option '-C' implies
'-M', instead of suggesting that '-M', '-C' is required.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAdd GIT_EDITOR environment and core.editor configuration variables
Adam Roben [Fri, 20 Jul 2007 05:09:35 +0000 (22:09 -0700)]
Add GIT_EDITOR environment and core.editor configuration variables

These variables let you specify an editor that will be launched in
preference to the EDITOR and VISUAL environment variables. The order
of preference is GIT_EDITOR, core.editor, EDITOR, VISUAL.

[jc: added a test and config variable documentation]

Signed-off-by: Adam Roben <aroben@apple.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument how to tell git to not launch a pager
Steven Grimm [Thu, 19 Jul 2007 10:43:51 +0000 (03:43 -0700)]
Document how to tell git to not launch a pager

Signed-off-by: Steven Grimm <koreth@midwinter.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-gui: Completely remove support for creating octopus merges
Shawn O. Pearce [Thu, 19 Jul 2007 06:24:25 +0000 (02:24 -0400)]
git-gui: Completely remove support for creating octopus merges

I'm working on refactoring the UI of the merge dialog, because as it
currently stands the dialog is absolutely horrible, especially when
you have 200+ branches available from a single remote system.

In that refactoring I plan on using the choose_rev widget to allow
the user to select exactly which branch/commit they want to merge.
However since that only selects a single commit I'm first removing
the code that supports octopus merges.

A brief consultation on #git tonight seemed to indicate that the
octopus merge strategy is not as useful as originally thought when
it was invented, and that most people don't commonly use them.  So
making users fall back to the command line to create an octopus is
actually maybe a good idea here, as they might think twice before
they use it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Don't show blame tooltips that we have no data for
Shawn O. Pearce [Thu, 19 Jul 2007 05:45:42 +0000 (01:45 -0400)]
git-gui: Don't show blame tooltips that we have no data for

If we haven't yet loaded any commit information for a given line but
our tooltip timer fired and tried to draw the tooltip we shouldn't;
there is nothing to show.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Translate standard encoding names to Tcl ones
Shawn O. Pearce [Thu, 19 Jul 2007 05:13:29 +0000 (01:13 -0400)]
git-gui: Translate standard encoding names to Tcl ones

This is a essentially a copy of Paul Mackerras encoding support from
gitk.  I stole the code from gitk commit fd8ccbec4f0161, as Paul has
already done all of the hard work setting up this translation table.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Avoid unnecessary global statements when possible
Shawn O. Pearce [Thu, 19 Jul 2007 04:43:16 +0000 (00:43 -0400)]
git-gui: Avoid unnecessary global statements when possible

Running global takes slightly longer than just accessing the variable
via its package name, especially if the variable is just only once in
the procedure, or isn't even used at all in the procedure.  So this is
a minor cleanup for some of our commonly invoked procedures.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Bind Ctrl/Cmd-M to merge action
Shawn O. Pearce [Thu, 19 Jul 2007 04:39:23 +0000 (00:39 -0400)]
git-gui: Bind Ctrl/Cmd-M to merge action

Users who merge often may want to access the merge action quickly,
so we now bind M to the merge action.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoDon't offer my special Tools/Migrate hack unless in multicommit
Shawn O. Pearce [Wed, 18 Jul 2007 13:37:27 +0000 (09:37 -0400)]
Don't offer my special Tools/Migrate hack unless in multicommit

Users shouldn't see this menu option if they startup a browser or
blame from the command line, especially if they are doing so on a
bare repository.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoRename read_pipe() with read_fd() and make its buffer nul-terminated.
Carlos Rica [Wed, 18 Jul 2007 18:31:03 +0000 (20:31 +0200)]
Rename read_pipe() with read_fd() and make its buffer nul-terminated.

The new name is closer to the purpose of the function.

A NUL-terminated buffer makes things easier when callers need that.
Since the function returns only the memory written with data,
almost always allocating more space than needed because final
size is unknown, an extra NUL terminating the buffer is harmless.
It is not included in the returned size, so the function
remains working as before.

Also, now the function allows the buffer passed to be NULL at first,
and alloc_nr is now used for growing the buffer, instead size=*2.

Signed-off-by: Carlos Rica <jasampler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'master' of git://people.freedesktop.org/~hausmann/git-p4
Junio C Hamano [Thu, 19 Jul 2007 00:23:03 +0000 (17:23 -0700)]
Merge branch 'master' of git://people.freedesktop.org/~hausmann/git-p4

* 'master' of git://people.freedesktop.org/~hausmann/git-p4:
  git-p4: Cleanup, used common function for listing imported p4 branches
  git-p4: Fix upstream branch detection for submit/rebase with multiple branches.
  git-p4: Cleanup, make listExistingP4Branches a global function for later use.
  git-p4: input to "p4 files" by stdin instead of arguments
  git-p4: use subprocess in p4CmdList

17 years agofilter-branch: get rid of "set -e"
Johannes Schindelin [Wed, 18 Jul 2007 13:17:43 +0000 (14:17 +0100)]
filter-branch: get rid of "set -e"

It was reported by Alex Riesen that "set -e" can break something as
trivial as "unset CDPATH" in bash.

So get rid of "set -e".

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-svn: Minimalistic patch which allows svn usernames with space(s).
Richard MUSIL [Tue, 17 Jul 2007 17:02:57 +0000 (19:02 +0200)]
git-svn: Minimalistic patch which allows svn usernames with space(s).

Changed filter for username in svn-authors file, so even 'user name' is accepted.

Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDo a better job at guessing unknown character sets
Linus Torvalds [Tue, 17 Jul 2007 17:34:44 +0000 (10:34 -0700)]
Do a better job at guessing unknown character sets

At least in the kernel development community, we're generally slowly
converting to UTF-8 everywhere, and the old default of Latin1 in emails is
being supplanted by UTF-8, and it doesn't necessarily show up as such in
the mail headers (because, quite frankly, when people send patches
around, they want the email client to do as little as humanly possible
about the patch)

Despite that, it's often the case that email addresses etc still have
Latin1, so I've seen emails where this is a mixed bag, with Signed-off
parts being copied from email (and containing Latin1 characters), and the
rest of the email being a patch in UTF-8.

So this suggests a very natural change: if the target character set is
utf-8 (the default), and if the source already looks like utf-8, just
assume that it doesn't need any conversion at all.

Only assume that it needs conversion if it isn't already valid utf-8, in
which case we (for historical reasons) will assume it's Latin1.

Basically no really _valid_ latin1 will ever look like utf-8, so while
this changes our historical behaviour, it doesn't do so in practice, and
makes the default behaviour saner for the case where the input was already
in proper format.

We could do a more fancy guess, of course, but this correctly handled a
series of patches I just got from Andrew that had a mixture of Latin1 and
UTF-8 (in different emails, but without any character set indication).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument "git stash message..."
しらいしななこ [Tue, 17 Jul 2007 08:15:42 +0000 (17:15 +0900)]
Document "git stash message..."

The command was recently updated to take message on the command line, but
this feature has not been documented.

Signed-off-by: Nanako Shiraishi <nanako3@bluebottle.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agounpack-trees.c: assume submodules are clean during check-out
Sven Verdoolaege [Tue, 17 Jul 2007 18:28:28 +0000 (20:28 +0200)]
unpack-trees.c: assume submodules are clean during check-out

In particular, when moving back to a commit without a given submodule
and then moving back forward to a commit with the given submodule,
we shouldn't complain that updating would lose untracked file in
the submodule, because git currently does not checkout subprojects
during superproject check-out.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'maint'
Junio C Hamano [Thu, 19 Jul 2007 00:00:36 +0000 (17:00 -0700)]
Merge branch 'maint'

* maint:
  Force listingblocks to be monospaced in manpages
  Do not expect unlink(2) to fail on a directory.

17 years agoForce listingblocks to be monospaced in manpages
Julian Phillips [Wed, 18 Jul 2007 21:33:57 +0000 (22:33 +0100)]
Force listingblocks to be monospaced in manpages

For the html output we can use a stylesheet to make sure that the
listingblocks are presented in a monospaced font.  For the manpages do
it manually by inserting a ".ft C" before and ".ft" after the block in
question.

In order for these roff commands to get through to the manpage they
have to be element encoded to prevent quoting.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-p4: Cleanup, used common function for listing imported p4 branches
Simon Hausmann [Wed, 18 Jul 2007 15:27:50 +0000 (17:27 +0200)]
git-p4: Cleanup, used common function for listing imported p4 branches

Signed-off-by: Simon Hausmann <simon@lst.de>
17 years agogit-p4: Fix upstream branch detection for submit/rebase with multiple branches.
Simon Hausmann [Wed, 18 Jul 2007 10:40:12 +0000 (12:40 +0200)]
git-p4: Fix upstream branch detection for submit/rebase with multiple branches.

Don't use git name-rev to locate the upstream git-p4 branch for rebase and submit but instead locate the branch by comparing the depot paths.
name-rev may produce results like wrongbranch~12 as it uses the first match.

Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
17 years agogit-p4: Cleanup, make listExistingP4Branches a global function for later use.
Simon Hausmann [Wed, 18 Jul 2007 08:56:31 +0000 (10:56 +0200)]
git-p4: Cleanup, make listExistingP4Branches a global function for later use.

Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
17 years agoDo not expect unlink(2) to fail on a directory.
Junio C Hamano [Wed, 18 Jul 2007 05:58:28 +0000 (22:58 -0700)]
Do not expect unlink(2) to fail on a directory.

When "git checkout-index" checks out path A/B/C, it makes sure A
and A/B are truly directories; if there is a regular file or
symlink at A, we prefer to remove it.

We used to do this by catching an error return from mkdir(2),
and on EEXIST did unlink(2), and when it succeeded, tried
another mkdir(2).

Thomas Glanzmann found out the above does not work on Solaris
for a root user, as unlink(2) was so old fashioned there that it
allowed to unlink a directory.

As pointed out, this still doesn't guarantee that git won't call
"unlink()" on a directory (race conditions etc), but that's
fundamentally true (there is no "funlink()" like there is
"fstat()"), and besides, that is in no way git-specific (ie it's
true of any application that gets run as root).

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-gui: Convert merge dialog to use class system
Shawn O. Pearce [Wed, 18 Jul 2007 06:56:44 +0000 (02:56 -0400)]
git-gui: Convert merge dialog to use class system

I've found that the class code makes it a whole lot easier to create
more complex GUI code, especially the dialogs.  So before I make any
major improvements to the merge dialog's interface I'm going to first
switch it to use the class system, so the code is slightly cleaner.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Increase the default height of the revision picker
Shawn O. Pearce [Wed, 18 Jul 2007 06:27:39 +0000 (02:27 -0400)]
git-gui: Increase the default height of the revision picker

Showing only five lines of heads/tags is not very useful to a user
when they have about 10 branches that match the filter expression.
The list is just too short to really be able to read easily, at
least not without scrolling up and down.  Expanding the list out
to 10 really makes the revision picker easier to read and access,
as you can read the matching branches much more quickly.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Clarify the visualize history menu options
Shawn O. Pearce [Wed, 18 Jul 2007 05:48:41 +0000 (01:48 -0400)]
git-gui: Clarify the visualize history menu options

Users who are new to Git may not realize that visualizing things in
a repository involves looking at history.  Adding in a small amount
of text to the menu items really helps to understand what the action
might do, before you invoke it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Allow users to browse any branch, not just the current one
Shawn O. Pearce [Wed, 18 Jul 2007 05:39:27 +0000 (01:39 -0400)]
git-gui: Allow users to browse any branch, not just the current one

We now allow users to pick which commit they want to browse through
our revision picking mega-widget.  This opens up in a dialog first,
and then opens a tree browser for that selected commit.  It is a very
simple approach and requires minimal code changes.

I also clarified the language a bit in the Repository menu, to show
that these actions will access files.  Just in case a user is not
quite sure what specific action they are looking for, but they know
they want some sort of file thing.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Allow browser subcommand to start in subdirectory
Shawn O. Pearce [Wed, 18 Jul 2007 04:53:14 +0000 (00:53 -0400)]
git-gui: Allow browser subcommand to start in subdirectory

Like our blame subcommand the browser subcommand now accepts both
a revision and a path, just a revision or just a path.  This way
the user can start the subcommand on any branch, or on any subtree.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Allow blame/browser subcommands on bare repositories
Shawn O. Pearce [Wed, 18 Jul 2007 03:58:56 +0000 (23:58 -0400)]
git-gui: Allow blame/browser subcommands on bare repositories

A long time ago Linus Torvalds tried to run git-gui on a bare
repository to look at the blame viewer, but it failed to start
because we required that the user run us only from within a
working directory that had a normal git repository associated
with it.

This change relaxes that requirement so that you can start the
tree browser or the blame viewer against a bare repository. In
the latter case we do require that you provide a revision and a
pathname if we cannot find the pathname in the current working
directory.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Move feature option selection before GIT_DIR init
Shawn O. Pearce [Wed, 18 Jul 2007 03:23:56 +0000 (23:23 -0400)]
git-gui: Move feature option selection before GIT_DIR init

By moving our feature option determination up before we look for GIT_DIR
we can make a decision about whether or not we need a working tree up
front, before we look for GIT_DIR.  A future change could then allow
us to start in a bare Git repository if we only need access to the ODB.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Delay the GC hint until after we are running
Shawn O. Pearce [Wed, 18 Jul 2007 03:20:56 +0000 (23:20 -0400)]
git-gui: Delay the GC hint until after we are running

I'm moving the code related to looking to see if we should GC now
into a procedure closer to where it belongs, the database module.
This reduces our script by a few lines for the single commit case
(aka citool).  But really it just is to help organize the code.

We now perform the check after we have been running for at least
1 second.  This way the main window has time to open up and our
dialog (if we open it) will attach to the main window, instead of
floating out in no-mans-land like it did before on Mac OS X.

I had to use a wait of a full second here as a wait of 1 millisecond
made our console install itself into the main window.  Apparently we
had a race condition with the console code where both the console and
the main window thought they were the main window.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Let the user continue even if we cannot understand git version
Shawn O. Pearce [Wed, 18 Jul 2007 03:09:31 +0000 (23:09 -0400)]
git-gui: Let the user continue even if we cannot understand git version

Some users may do odd things, like tag their own private version of
Git with an annotated tag such as 'testver', then compile that git
and try to use it with git-gui.  In such a case `git --version` will
give us 'git version testver', which is not a numeric argument that
we can pass off to our version comparsion routine.

We now check that the cleaned up git version is a going to pass the
version comparsion routine without failure.  If it has a non-numeric
component, or lacks at least a minor revision then we ask the user to
confirm they really want to use this version of git within git-gui.
If they do we shall assume it is git 1.5.0 and run with only the code
that will support.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Change our initial GC hint to be an estimate
Shawn O. Pearce [Wed, 18 Jul 2007 02:49:44 +0000 (22:49 -0400)]
git-gui: Change our initial GC hint to be an estimate

Instead of running a full git-count-objects to count all of the loose
objects we can get a reasonably close approximation by counting the
number of files in the .git/objects/42 subdirectory. This works out
reasonably well because the SHA-1 hash has a fairly even distribution,
so every .git/objects/?? subdirectory should get a relatively equal
number of files.  If we have at least 8 files in .git/objects/42 than it
is very likely there is about 8 files in every other directory, leaving
us with around 2048 loose objects.

This check is much faster, as we need to only perform a readdir of
a single directory, and we can do it directly from Tcl and avoid the
costly fork+exec.

All of the credit on how clever this is goes to Linus Torvalds; he
suggested using this trick in a post commit hook to repack every so
often.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Don't crash in ask_popup if we haven't mapped main window yet
Shawn O. Pearce [Wed, 18 Jul 2007 02:45:53 +0000 (22:45 -0400)]
git-gui: Don't crash in ask_popup if we haven't mapped main window yet

If we have more than our desired number of objects and we try to
open the "Do you want to repack now?" dialog we cannot include a
-parent . argument if the main window has not been mapped yet.
On Mac OS X it appears this window isn't mapped right away, so we
had better hang avoid including it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Delay searching for 'nice' until its really asked for
Shawn O. Pearce [Wed, 18 Jul 2007 02:31:16 +0000 (22:31 -0400)]
git-gui: Delay searching for 'nice' until its really asked for

Not every caller of 'git' or 'git_pipe' wants to use nice to lower the
priority of the process its executing.  In many cases we may never use
the nice process to launch git.  So we can avoid searching our $PATH
to locate a suitable nice if we'll never actually use it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Handle git versions of the form n.n.n.GIT
Julian Phillips [Tue, 17 Jul 2007 21:14:06 +0000 (22:14 +0100)]
git-gui: Handle git versions of the form n.n.n.GIT

The git-gui version check doesn't handle versions of the form
n.n.n.GIT which you can get by installing from an tarball produced by
git-archive.

Without this change you get an error of the form:
'Error in startup script: expected version number but got "1.5.3.GIT"'

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoUpdate INSTALL
Junio C Hamano [Tue, 17 Jul 2007 06:59:54 +0000 (23:59 -0700)]
Update INSTALL

We haven't used bignum in rev-list from openssl nor elsewhere
for a long time.  Also git-gui is now part of git.git itself,
and depends on wish.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-p4: input to "p4 files" by stdin instead of arguments
Scott Lamb [Mon, 16 Jul 2007 03:58:11 +0000 (20:58 -0700)]
git-p4: input to "p4 files" by stdin instead of arguments

This approach, suggested by Alex Riesen, bypasses the need for xargs-style
argument list handling. The handling in question looks broken in a corner
case with SC_ARG_MAX=4096 and final argument over 96 characters.

Signed-off-by: Scott Lamb <slamb@slamb.org>
Signed-off-by: Simon Hausmann <simon@lst.de>
17 years agogit-p4: use subprocess in p4CmdList
Scott Lamb [Mon, 16 Jul 2007 03:58:10 +0000 (20:58 -0700)]
git-p4: use subprocess in p4CmdList

This allows bidirectional piping - useful for "-x -" to avoid commandline
arguments - and is a step toward bypassing the shell.

Signed-off-by: Scott Lamb <slamb@slamb.org>
Signed-off-by: Simon Hausmann <simon@lst.de>
17 years agogit-gui: Always disable the Tcl EOF character when reading
Shawn O. Pearce [Tue, 17 Jul 2007 05:50:10 +0000 (01:50 -0400)]
git-gui: Always disable the Tcl EOF character when reading

On Windows (which includes Cygwin) Tcl defaults to leaving the EOF
character of input file streams set to the ASCII EOF character, but
if that character were to appear in the data stream then Tcl will
close the channel early.  So we have to disable eofchar on Windows.
Since the default is disabled on all platforms except Windows, we
can just disable it everywhere to prevent any sort of read problem.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoFix git-branch documentation when using remote refs
Francis Moreau [Mon, 16 Jul 2007 11:38:47 +0000 (13:38 +0200)]
Fix git-branch documentation when using remote refs

Signed-off-by: Francis Moreau <francis.moro@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-gui: Brown paper bag "dirty git version fix"
Shawn O. Pearce [Mon, 16 Jul 2007 22:44:23 +0000 (18:44 -0400)]
git-gui: Brown paper bag "dirty git version fix"

My prior change to allow git-gui to run with a version of Git
that was built from a working directory that had uncommitted
changes didn't account for the pattern starting with -, and
that confused Tcl.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-gui: Skip -dirty suffix on core git versions
Shawn O. Pearce [Mon, 16 Jul 2007 06:39:07 +0000 (02:39 -0400)]
git-gui: Skip -dirty suffix on core git versions

If the user is running a 'dirty' version of git (one compiled in a
working directory with modified files) we want to just assume it
was a committed version, as we really only look at the part that
came from a real annotated tag anyway.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-svn: fix commiting renames over DAV with funky file names
Eric Wong [Mon, 16 Jul 2007 04:53:50 +0000 (21:53 -0700)]
git-svn: fix commiting renames over DAV with funky file names

Renaming files with non-URI friendly characters caused
breakage when committing to DAV repositories (over http(s)).

Even if I try leaving out the $self->{url} from the return value
of url_path(), a partial (without host), unescaped path name
does not work.

Filenames for DAV repos need to be URI-encoded before being
passed to the library.  Since this bug did not affect file://
and svn:// repos, the git-svn test library needed to be expanded
to include support for starting Apache with mod_dav_svn enabled.

This new test is not enabled by default, but can be enabled by
setting SVN_HTTPD_PORT to any available TCP/IP port on
127.0.0.1.

Additionally, for running this test, the following variables
(with defaults shown) can be changed for the suitable system.
The default values are set for Debian systems:

  SVN_HTTPD_MODULE_PATH=/usr/lib/apache2/modules
  SVN_HTTPD_PATH=/usr/sbin/apache2

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agocontrib/emacs/Makefile: Also install .el files.
David Kastrup [Sun, 15 Jul 2007 09:46:11 +0000 (11:46 +0200)]
contrib/emacs/Makefile: Also install .el files.

Signed-off-by: David Kastrup <dak@gnu.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoGIT v1.5.3-rc2 v1.5.3-rc2
Junio C Hamano [Sun, 15 Jul 2007 23:41:17 +0000 (16:41 -0700)]
GIT v1.5.3-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDemote git-p4import to contrib status.
Sean [Sun, 15 Jul 2007 19:52:32 +0000 (15:52 -0400)]
Demote git-p4import to contrib status.

Move git-p4import.py and Documentation/git-p4import.txt into
a contrib/p4import directory.   Add a README there directing
people to contrib/fast-import/git-p4 as a better alternative.

Signed-off-by: Sean Estabrooks <seanlkml@sympatico.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRemove p4 rpm from git.spec.in.
Sean [Sun, 15 Jul 2007 19:51:01 +0000 (15:51 -0400)]
Remove p4 rpm from git.spec.in.

Signed-off-by: Sean Estabrooks <seanlkml@sympatico.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRemove "WITH_P4IMPORT" knob from the Makefile
Sean [Sun, 15 Jul 2007 19:49:33 +0000 (15:49 -0400)]
Remove "WITH_P4IMPORT" knob from the Makefile

Signed-off-by: Sean Estabrooks <seanlkml@sympatico.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agogit-cvsserver: detect/diagnose write failure, etc.
Jim Meyering [Sat, 14 Jul 2007 18:48:42 +0000 (20:48 +0200)]
git-cvsserver: detect/diagnose write failure, etc.

There were many operations that did not notice and report errors
to the CVS client, which would have resulted in corrupt working
tree.

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUse $(RM) in Makefiles instead of 'rm -f'
Emil Medve [Sat, 14 Jul 2007 17:51:44 +0000 (12:51 -0500)]
Use $(RM) in Makefiles instead of 'rm -f'

Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMerge branch 'master' of git://repo.or.cz/git/fastimport
Junio C Hamano [Sun, 15 Jul 2007 05:57:47 +0000 (22:57 -0700)]
Merge branch 'master' of git://repo.or.cz/git/fastimport

* 'master' of git://repo.or.cz/git/fastimport:
  Teach fast-import to recursively copy files/directories
  Fix git-p4 on Windows to not use the Posix sysconf function.
  Correct trivial typo in fast-import documentation

17 years agoDocumentation/git-commit-tree: remove description of a nonexistent limitation
Junio C Hamano [Sun, 15 Jul 2007 05:56:47 +0000 (22:56 -0700)]
Documentation/git-commit-tree: remove description of a nonexistent limitation

Noticed by Geoff Richards.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMake every builtin-*.c file #include "builtin.h"
Peter Hagervall [Sat, 14 Jul 2007 23:14:45 +0000 (01:14 +0200)]
Make every builtin-*.c file #include "builtin.h"

Make every builtin-*.c file #include "builtin.h".

Also takes care of some declaration/definition mismatches.

Signed-off-by: Peter Hagervall <hager@cs.umu.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoTeach fast-import to recursively copy files/directories
Shawn O. Pearce [Sun, 15 Jul 2007 05:40:37 +0000 (01:40 -0400)]
Teach fast-import to recursively copy files/directories

Some source material (e.g. Subversion dump files) perform directory
renames by telling us the directory was copied, then deleted in the
same revision.  This makes it difficult for a frontend to convert
such data formats to a fast-import stream, as all the frontend has
on hand is "Copy a/ to b/; Delete a/" with no details about what
files are in a/, unless the frontend also kept track of all files.

The new 'C' subcommand within a commit allows the frontend to make a
recursive copy of one path to another path within the branch, without
needing to keep track of the individual file paths.  The metadata
copy is performed in memory efficiently, but is implemented as a
copy-immediately operation, rather than copy-on-write.

With this new 'C' subcommand frontends could obviously implement an
'R' (rename) on their own as a combination of 'C' and 'D' (delete),
but since we have already offered up 'R' in the past and it is a
trivial thing to keep implemented I'm not going to deprecate it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agoFix git-p4 on Windows to not use the Posix sysconf function.
Marius Storm-Olsen [Fri, 13 Jul 2007 12:39:05 +0000 (14:39 +0200)]
Fix git-p4 on Windows to not use the Posix sysconf function.

Add condition for Windows, since it doesn't support the os.sysconf module.
We hardcode the commandline limit to 2K, as that should work on most
Windows platforms.

Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Acked-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
17 years agogit-svn: remove leading slashes from fetch lines in the generate config
Eric Wong [Sat, 14 Jul 2007 19:40:32 +0000 (12:40 -0700)]
git-svn: remove leading slashes from fetch lines in the generate config

We were previously sensitive to leading slashes in the fetch
lines and incorrectly writing them to the config if the user
used them (needlessly) in the command-line.

This fixes the issue and allows us to play nicely with legacy
configs that have leading slashes in fetch lines.

Thanks to Bradford Smith for figuring this out for me:
>
> This works:
>
> git-svn clone https://my.server.net/repos/path/ -Ttrunk/testing
>   -ttags/testing -bbranches/testing testing
>
> This doesn't:
>
> git-svn clone https://my.server.net/repos/path -T/trunk/testing
>   -t/tags/testing -b/branches/testing testing

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoUpdate .mailmap
Junio C Hamano [Sat, 14 Jul 2007 20:44:58 +0000 (13:44 -0700)]
Update .mailmap

The script "contrib/stats/mailmap.pl" found a few missed ones.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoAdd contrib/stats/mailmap.pl script
Junio C Hamano [Sat, 14 Jul 2007 20:43:09 +0000 (13:43 -0700)]
Add contrib/stats/mailmap.pl script

This script reads the existing commit log and .mailmap file,
and outputs author e-mail addresses that would map to more
than one names (most likely due to difference in the way they
are spelled, but some are due to ancient botched commits).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoRemove useless uses of cat, and replace with filename arguments
Josh Triplett [Sat, 14 Jul 2007 08:05:43 +0000 (01:05 -0700)]
Remove useless uses of cat, and replace with filename arguments

Replace uses of cat that do nothing but writing the contents of
a single file to another command via pipe.

[jc: Original patch from Josh was somewhat buggy and rewrote
"cat $file | wc -l" to "wc -l $file", but this one should be Ok.]

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMore permissive "git-rm --cached" behavior without -f.
Matthieu Moy [Fri, 13 Jul 2007 17:41:38 +0000 (19:41 +0200)]
More permissive "git-rm --cached" behavior without -f.

In the previous behavior, "git-rm --cached" (without -f) had the same
restriction as "git-rm". This forced the user to use the -f flag in
situations which weren't actually dangerous, like:

$ git add foo           # oops, I didn't want this
$ git rm --cached foo   # back to initial situation

Previously, the index had to match the file *and* the HEAD. With
--cached, the index must now match the file *or* the HEAD. The behavior
without --cached is unchanged, but provides better error messages.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoDocument new --date=<format>
Junio C Hamano [Sat, 14 Jul 2007 06:48:03 +0000 (23:48 -0700)]
Document new --date=<format>

Now, git-log family can take full range of internally supported date format
to their --date=<format> argument.  Document it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoWire new date formats to --date=<format> parser.
Junio C Hamano [Sat, 14 Jul 2007 06:03:37 +0000 (23:03 -0700)]
Wire new date formats to --date=<format> parser.

Now we can use all internally supported date formats with

git log --date=<format>

syntax.  Earlier, we only allowed relative/local/default.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
17 years agoMake show_rfc2822_date() just another date output format.
Junio C Hamano [Sat, 14 Jul 2007 06:14:52 +0000 (23:14 -0700)]
Make show_rfc2822_date() just another date output format.

These days, show_date() takes a date_mode parameter to specify
the output format, and a separate specialized function for dates
in E-mails does not make much sense anymore.

This retires show_rfc2822_date() function and make it just
another date output format.

Signed-off-by: Junio C Hamano <gitster@pobox.com>