gitweb.git
Teach rebase to rebase even if upstream is up to dateSverre Rabbelier Fri, 13 Feb 2009 22:48:01 +0000 (23:48 +0100)

Teach rebase to rebase even if upstream is up to date

Normally, if the current branch is up to date, the rebase is aborted.
However, it may be desirable to allow rebasing even if the current
branch is up to date. When using the '--whitespace=fix' option -f is
implied.

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Install the default "master" branch configuration after... Junio C Hamano Thu, 12 Feb 2009 06:42:27 +0000 (22:42 -0800)

Install the default "master" branch configuration after cloning a void

After "cloning from an empty repository", we have a configuration to
describe the remote's URL and the default ref mappings, but we lack the
branch configuration for the default branch we create on our end,
"master".

It is likely that the empty repository we cloned from will point the
default "master" branch with its HEAD, so prepare the local configuration
to match.

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

Update documentation to add further information about... Jeremy White Thu, 12 Feb 2009 21:17:04 +0000 (15:17 -0600)

Update documentation to add further information about using Thunderbird with git-imap-send.

Signed-off-by: Jeremy White <jwhite@codeweavers.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-rebase.txt: --interactive does not work with -... Mark Burton Thu, 12 Feb 2009 10:21:19 +0000 (10:21 +0000)

git-rebase.txt: --interactive does not work with --whitespace

Signed-off-by: Mark Burton <markb@ordern.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add 'rm -f' equivalent to 'git rm' example of filter... Jacob Helwig Thu, 12 Feb 2009 18:01:10 +0000 (10:01 -0800)

Add 'rm -f' equivalent to 'git rm' example of filter-branch --index-filter

Signed-off-by: Jacob Helwig <jacob.helwig@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Revert "validate_headref: tighten ref-matching to just... Junio C Hamano Thu, 12 Feb 2009 21:02:09 +0000 (13:02 -0800)

Revert "validate_headref: tighten ref-matching to just branches"

This reverts commit b229d18a809c169314b7f0d048dc5a7632e8f916, at least
until we figure out how to work better with TopGit that points HEAD to
refs/top-bases/ hierarchy.

Bugfix: GIT_EXTERNAL_DIFF with more than one changed... Nazri Ramliy Thu, 12 Feb 2009 13:36:14 +0000 (21:36 +0800)

Bugfix: GIT_EXTERNAL_DIFF with more than one changed files

When there is more than one file that are changed, running git diff with
GIT_EXTERNAL_DIFF incorrectly diagnoses an programming error and dies.
The check introduced in 479b0ae (diff: refactor tempfile cleanup handling,
2009-01-22) to detect a temporary file slot that forgot to remove its
temporary file was inconsistent with the way the codepath to remove the
temporary to mark the slot that it is done with it.

This patch fixes this problem and adds a test case for it.

Signed-off-by: Nazri Ramliy <ayiehere@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Thu, 12 Feb 2009 02:47:30 +0000 (18:47 -0800)

Merge branch 'maint'

* maint:
Prepare for 1.6.1.4.
Make repack less likely to corrupt repository
fast-export: ensure we traverse commits in topological order
Clear the delta base cache if a pack is rebuilt

Conflicts:
RelNotes

Prepare for 1.6.1.4.Junio C Hamano Thu, 12 Feb 2009 02:44:03 +0000 (18:44 -0800)

Prepare for 1.6.1.4.

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

Merge branch 'maint-1.6.0' into maintJunio C Hamano Thu, 12 Feb 2009 02:32:37 +0000 (18:32 -0800)

Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
Make repack less likely to corrupt repository
fast-export: ensure we traverse commits in topological order
Clear the delta base cache if a pack is rebuilt

Make repack less likely to corrupt repositoryJunio C Hamano Tue, 10 Feb 2009 20:16:31 +0000 (12:16 -0800)

Make repack less likely to corrupt repository

Some platforms refuse to rename a file that is open. When repacking an
already packed repository without adding any new object, the resulting
pack will contain the same set of objects as an existing pack, and on such
platforms, a newly created packfile cannot replace the existing one.

The logic detected this issue but did not try hard enough to recover from
it. Especially because the files that needs renaming come in pairs, there
potentially are different failure modes that one can be renamed but the
others cannot. Asking manual recovery to end users were error prone.

This patch tries to make it more robust by first making sure all the
existing files that need to be renamed have been renamed before
continuing, and attempts to roll back if some failed to rename.

This is based on an initial patch by Robin Rosenberg.

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

fast-export: ensure we traverse commits in topological... Elijah Newren Wed, 11 Feb 2009 06:03:53 +0000 (23:03 -0700)

fast-export: ensure we traverse commits in topological order

fast-export will only list as parents those commits which have already
been traversed (making it appear as if merges have been squashed if not
all parents have been traversed). To avoid this silent squashing of
merge commits, we request commits in topological order.

Signed-off-by: Elijah Newren <newren@gmail.com>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

filter-branch: Add more error-handlingEric Kidd Wed, 11 Feb 2009 21:10:41 +0000 (16:10 -0500)

filter-branch: Add more error-handling

9273b56 (filter-branch: Fix fatal error on bare repositories, 2009-02-03)
fixed a missing check of return status from an underlying command in
git-filter-branch, but there still are places that do not check errors.
For example, the command does not pay attention to the exit status of the
command given by --commit-filter. It should abort in such a case.

This attempts to fix all the remaining places that fails to checks errors.

In two places, I've had to break apart pipelines in order to check the
error code for the first stage of the pipeline, as discussed here:

http://kerneltrap.org/mailarchive/git/2009/1/28/4835614

Feedback on this patch was provided by Johannes Sixt, Johannes Schindelin
and Junio C Hamano. Thomas Rast helped with pipeline error handling.

Signed-off-by: Eric Kidd <git@randomhacks.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix contrib/hooks/post-receive-email for new duplicate... Pat Notz Tue, 10 Feb 2009 16:43:30 +0000 (09:43 -0700)

Fix contrib/hooks/post-receive-email for new duplicate branch

In the show_new_revisions function, the original code:

git rev-parse --not --branches | grep -v $(git rev-parse $refname) |

isn't quite right since one can create a new branch and push it
without any new commits. In that case, two refs will have the same
sha1 but both would get filtered by the 'grep'. In the end, we'll
show ALL the history which is not what we want. Instead, we should
list the branches by name and remove the branch being updated and THEN
pass that list through rev-parse.

Revised as suggested by Jakub Narebski and Junio C Hamano to use
git-for-each-ref instead of git-branch. (Thanks!)

Signed-off-by: Pat Notz <pknotz@sandia.gov>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Clear the delta base cache if a pack is rebuiltShawn O. Pearce Wed, 11 Feb 2009 18:15:30 +0000 (10:15 -0800)

Clear the delta base cache if a pack is rebuilt

There is some risk that re-opening a regenerated pack file with
different offsets could leave stale entries within the delta base
cache that could be matched up against other objects using the same
"struct packed_git*" and pack offset.

Throwing away the entire delta base cache in this case is safer,
as we don't have to worry about a recycled "struct packed_git*"
matching to the wrong base object, resulting in delta apply
errors while unpacking an object.

Suggested-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://git.bogomips.org/git-svnJunio C Hamano Wed, 11 Feb 2009 18:20:12 +0000 (10:20 -0800)

Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
test case for regression caused by git-svn empty symlink fix
git-svn: fix broken symlink workaround when switching branches
git-svn: Print revision while searching for earliest use of path
git-svn: abstract out a block into new method other_gs()
git-svn: allow disabling expensive broken symlink checks

Squelch overzealous "ignoring dangling symref" in an... Junio C Hamano Wed, 11 Feb 2009 17:22:16 +0000 (09:22 -0800)

Squelch overzealous "ignoring dangling symref" in an empty repository

057e713 (Warn use of "origin" when remotes/origin/HEAD is dangling,
2009-02-08) tried to warn dangling refs/remotes/origin/HEAD only when
"origin" was used to refer to it. There was one corner case a symref is
expected to be dangling and this warning is unwarranted: HEAD in an empty
repository.

This squelches the warning for this special case.

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

test case for regression caused by git-svn empty symlin... Anton Gyllenberg Tue, 10 Feb 2009 22:38:45 +0000 (00:38 +0200)

test case for regression caused by git-svn empty symlink fix

Commit dbc6c74d0858d77e61e092a48d467e725211f8e9 "git-svn: handle empty
files marked as symlinks in SVN" caused a regression in an unusual case
where a branch has been created in SVN, later deleted and then created
again from another branch point and the original branch point had empty
files not in the new branch. In some cases git svn fetch will then fail
while trying to fetch the empty file from the wrong SVN revision.

This adds a test case that reproduces the issue.

[ew: added additional test to ensure file was created correctly
made test file executable ]

Signed-off-by: Anton Gyllenberg <anton@iki.fi>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn: fix broken symlink workaround when switching... Eric Wong Wed, 11 Feb 2009 09:56:58 +0000 (01:56 -0800)

git-svn: fix broken symlink workaround when switching branches

Thanks to Anton Gyllenberg <anton@iki.fi> for the bug report
(and testcase in the following commit):
> Commit dbc6c74d0858d77e61e092a48d467e725211f8e9 "git-svn:
> handle empty files marked as symlinks in SVN" caused a
> regression in an unusual case where a branch has been created
> in SVN, later deleted and then created again from another
> branch point and the original branch point had empty files not
> in the new branch. In some cases git svn fetch will then fail
> while trying to fetch the empty file from the wrong SVN
> revision.

Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn: Print revision while searching for earliest... Deskin Miller Mon, 9 Feb 2009 00:33:18 +0000 (19:33 -0500)

git-svn: Print revision while searching for earliest use of path

When initializing a git-svn repository from a Subversion repoository,
it is common to be interested in a path which did not exist in the
initial commit to Subversion. In a large repository, the initial fetch
may take some looking for the earliest existence of the path time while
the user receives no additional feedback. Print the highest revision
number scanned thus far to let the user know something is still
happening.

Signed-off-by: Deskin Miller <deskinm@umich.edu>

git-svn: abstract out a block into new method other_gs()Sam Vilain Tue, 26 Jun 2007 07:23:59 +0000 (19:23 +1200)

git-svn: abstract out a block into new method other_gs()

We will be adding a more places that need to find git revisions
corresponding to new parents, so abstract out this section into a new
method.

Signed-off-by: Yuval Kogman <nothingmuch@woobling.org>
Signed-off-by: Sam Vilain <sam@vilain.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: minor formatting changes]

git-svn: allow disabling expensive broken symlink checksEric Wong Sun, 1 Feb 2009 01:31:12 +0000 (17:31 -0800)

git-svn: allow disabling expensive broken symlink checks

Since dbc6c74d0858d77e61e092a48d467e725211f8e9, git-svn has had
an expensive check for broken symlinks that exist in some
repositories. This leads to a heavy performance hit on
repositories with many empty blobs that are not supposed to be
symlinks.

The workaround is enabled by default; and may be disabled via:

git config svn.brokenSymlinkWorkaround false

Reported by Markus Heidelberg.

Signed-off-by: Eric Wong <normalperson@yhbt.net>

Merge branch 'maint'Junio C Hamano Wed, 11 Feb 2009 10:00:22 +0000 (02:00 -0800)

Merge branch 'maint'

* maint:
revision traversal and pack: notice and die on missing commit

Merge branch 'maint-1.5.6' into maintJunio C Hamano Wed, 11 Feb 2009 10:00:07 +0000 (02:00 -0800)

Merge branch 'maint-1.5.6' into maint

* maint-1.5.6:
revision traversal and pack: notice and die on missing commit

Merge branch 'maint-1.5.5' into maint-1.5.6Junio C Hamano Wed, 11 Feb 2009 09:41:22 +0000 (01:41 -0800)

Merge branch 'maint-1.5.5' into maint-1.5.6

* maint-1.5.5:
revision traversal and pack: notice and die on missing commit

Conflicts:
revision.c

Merge branch 'maint-1.5.4' into maint-1.5.5Junio C Hamano Wed, 11 Feb 2009 09:40:12 +0000 (01:40 -0800)

Merge branch 'maint-1.5.4' into maint-1.5.5

* maint-1.5.4:
revision traversal and pack: notice and die on missing commit

revision traversal and pack: notice and die on missing... Junio C Hamano Wed, 11 Feb 2009 09:27:43 +0000 (01:27 -0800)

revision traversal and pack: notice and die on missing commit

cc0e6c5 (Handle return code of parse_commit in revision machinery,
2007-05-04) attempted to tighten error checking in the revision machinery,
but it wasn't enough. When get_revision_1() was asked for the next commit
to return, it tries to read and simplify the parents of the commit to be
returned, but an error while doing so was silently ignored and reported as
a truncated history to the caller instead.

This resulted in an early end of "git log" output or a pack that lacks
older commits from "git pack-objects", without any error indication in the
exit status from these commands, even though the underlying parse_commit()
issues an error message to the end user.

Note that the codepath in add_parents_list() that paints parents of an
UNINTERESTING commit UNINTERESTING silently ignores the error when
parse_commit() fails; this is deliberate and in line with aeeae1b
(revision traversal: allow UNINTERESTING objects to be missing,
2009-01-27).

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

builtin-receive-pack.c: do not initialize statics to 0Junio C Hamano Mon, 9 Feb 2009 06:19:43 +0000 (22:19 -0800)

builtin-receive-pack.c: do not initialize statics to 0

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

receive-pack: receive.denyDeleteCurrentJunio C Hamano Mon, 9 Feb 2009 06:31:21 +0000 (22:31 -0800)

receive-pack: receive.denyDeleteCurrent

This is a companion patch to the recent 3d95d92 (receive-pack: explain
what to do when push updates the current branch, 2009-01-31).

Deleting the current branch from a remote will result in the next clone
from it not check out anything, among other things. It also is one of the
cause that makes remotes/origin/HEAD a dangling symbolic ref. This patch
still allows the traditional behaviour but with a big warning, and promises
that the default will change to 'refuse' in a future release.

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

Drop double-semicolon in CJunio C Hamano Wed, 11 Feb 2009 01:42:04 +0000 (17:42 -0800)

Drop double-semicolon in C

The worst offenders are "continue;;" and "break;;" in switch statements.

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

Warn use of "origin" when remotes/origin/HEAD is danglingJunio C Hamano Mon, 9 Feb 2009 07:52:01 +0000 (23:52 -0800)

Warn use of "origin" when remotes/origin/HEAD is dangling

The previous one squelched the diagnositic message we used to issue every
time we enumerated the refs and noticed a dangling ref. This adds the
warning back to the place where the user actually attempts to use it.

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

remote prune: warn dangling symrefsJunio C Hamano Mon, 9 Feb 2009 07:27:10 +0000 (23:27 -0800)

remote prune: warn dangling symrefs

If you prune from the remote "frotz" that deleted the ref your tracking
branch remotes/frotz/HEAD points at, the symbolic ref will become
dangling. We used to detect this as an error condition and issued a
message every time refs are enumerated.

This stops the error message, but moves the warning to "remote prune".

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

Fix the installation path for html documentationMichael J Gruber Tue, 10 Feb 2009 15:14:13 +0000 (16:14 +0100)

Fix the installation path for html documentation

026fa0d (Move computation of absolute paths from Makefile to runtime in
preparation for RUNTIME_PREFIX, 2009-01-18) broke the installation of html
documentation. A relative htmldir is given to Documentation/Makefile and
html documentations are installed in a subdirectory of "Documentation" in
the source tree.

Fix this by not exporting htmldir from Makefile; this allows
Documentation/Makefile to compute the htmldir from the prefix.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Generalize and libify index_is_dirty() to index_differs... Stephan Beyer Tue, 10 Feb 2009 14:30:35 +0000 (15:30 +0100)

Generalize and libify index_is_dirty() to index_differs_from(...)

index_is_dirty() in builtin-revert.c checks if the index is dirty.
This patch generalizes this function to check if the index differs
from a revision, i.e. the former index_is_dirty() behavior can now be
achieved by index_differs_from("HEAD", 0).

The second argument "diff_flags" allows to set further diff option
flags like DIFF_OPT_IGNORE_SUBMODULES. See DIFF_OPT_* macros in diff.h
for a list.

index_differs_from() seems to be useful for more than builtin-revert.c,
so it is moved into diff-lib.c and also used in builtin-commit.c.

Yet to mention:

- "rev.abbrev = 0;" can be safely removed.
This has no impact on performance or functioning of neither
setup_revisions() nor run_diff_index().

- rev.pending.objects is free()d because this fixes a leak.
(Also see 295dd2ad "Fix memory leak in traverse_commit_list")

Mentored-by: Daniel Barkalow <barkalow@iabervon.org>
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: resort filenames alphabeticallyStephan Beyer Mon, 9 Feb 2009 22:00:45 +0000 (23:00 +0100)

Makefile: resort filenames alphabetically

Some filenames in the Makefile got out of order.
This patch resorts the filename lists which makes it easier
to grasp that it is sorted and that this should be kept.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Modernize t5400 test scriptJunio C Hamano Mon, 9 Feb 2009 21:39:52 +0000 (13:39 -0800)

Modernize t5400 test script

Many tests checked for failure by hand without using test_must_fail (they
probably predate the shell function).

When we know the desired outcome, explicitly check for it, instead of
checking if the result does not match one possible incorrect outcome.
E.g. if you expect a push to be refused, you do not test if the result is
different from what was pushed. Instead, make sure that the ref did not
before and after the push.

The test sequence chdir'ed around and any failure at one point could have
started the next test in an unexpected directory. Fix this problem by
using subshells as necessary.

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

Describe notable git.el changes in the release notesAlexandre Julliard Mon, 9 Feb 2009 13:39:30 +0000 (14:39 +0100)

Describe notable git.el changes in the release notes

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Revert "Merge branch 'js/notes'"Junio C Hamano Wed, 11 Feb 2009 05:31:33 +0000 (21:31 -0800)

Revert "Merge branch 'js/notes'"

This reverts commit 7b75b331f6744fbf953fe8913703378ef86a2189, reversing
changes made to 5d680a67d7909c89af96eba4a2d77abed606292b.

Merge branch 'lh/submodule-tree-traversal' (early part)Junio C Hamano Wed, 11 Feb 2009 05:31:19 +0000 (21:31 -0800)

Merge branch 'lh/submodule-tree-traversal' (early part)

* 'lh/submodule-tree-traversal' (early part):
tree.c: allow read_tree_recursive() to traverse gitlink entries

Merge branch 'js/git-submodule-trailing-slash'Junio C Hamano Wed, 11 Feb 2009 05:31:08 +0000 (21:31 -0800)

Merge branch 'js/git-submodule-trailing-slash'

* js/git-submodule-trailing-slash:
submodule: warn about non-submodules
Let ls-files strip trailing slashes in submodules' paths

Merge branch 'js/maint-1.6.0-path-normalize'Junio C Hamano Wed, 11 Feb 2009 05:30:52 +0000 (21:30 -0800)

Merge branch 'js/maint-1.6.0-path-normalize'

* js/maint-1.6.0-path-normalize:
Remove unused normalize_absolute_path()
Test and fix normalize_path_copy()
Fix GIT_CEILING_DIRECTORIES on Windows
Move sanitary_path_copy() to path.c and rename it to normalize_path_copy()
Make test-path-utils more robust against incorrect use

Merge branch 'maint'Junio C Hamano Wed, 11 Feb 2009 05:30:45 +0000 (21:30 -0800)

Merge branch 'maint'

* maint:
Clear the delta base cache during fast-import checkpoint

Merge branch 'maint-1.6.0' into maintJunio C Hamano Tue, 10 Feb 2009 23:32:26 +0000 (15:32 -0800)

Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
Clear the delta base cache during fast-import checkpoint

Clear the delta base cache during fast-import checkpointShawn O. Pearce Tue, 10 Feb 2009 21:36:12 +0000 (13:36 -0800)

Clear the delta base cache during fast-import checkpoint

Otherwise we may reuse the same memory address for a totally
different "struct packed_git", and a previously cached object from
the prior occupant might be returned when trying to unpack an object
from the new pack.

Found-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-web--browse: Fix check for /bin/startTodd Zullinger Sun, 8 Feb 2009 23:12:43 +0000 (18:12 -0500)

git-web--browse: Fix check for /bin/start

The previous check in git-web--browse for /bin/start used test -n
/bin/start, which was always true. This lead to "start" being tried
first in the browser list. On systems with upstart installed, "start"
exists and might be in the PATH, but it makes a poor choice for a web
browser. Instead, test that /bin/start exists and is executable.

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

Merge branch 'maint'Junio C Hamano Mon, 9 Feb 2009 06:07:53 +0000 (22:07 -0800)

Merge branch 'maint'

* maint:
gitweb: add $prevent_xss option to prevent XSS by repository content
rev-list: fix showing distance when using --bisect-all

completion: Get rid of tabbed indentation in comments... Ted Pavlic Fri, 6 Feb 2009 16:05:38 +0000 (11:05 -0500)

completion: Get rid of tabbed indentation in comments. Replace with spaces.

Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: Fix GIT_PS1_SHOWDIRTYSTATE to prevent unbou... Ted Pavlic Fri, 6 Feb 2009 16:05:37 +0000 (11:05 -0500)

completion: Fix GIT_PS1_SHOWDIRTYSTATE to prevent unbound variable errors.

Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: add $prevent_xss option to prevent XSS by repos... Matt McCutchen Sun, 8 Feb 2009 00:00:09 +0000 (19:00 -0500)

gitweb: add $prevent_xss option to prevent XSS by repository content

Add a gitweb configuration variable $prevent_xss that disables features
to prevent content in repositories from launching cross-site scripting
(XSS) attacks in the gitweb domain. Currently, this option makes gitweb
ignore README.html (a better solution may be worked out in the future)
and serve a blob_plain file of an untrusted type with
"Content-Disposition: attachment", which tells the browser not to show
the file at its original URL.

The XSS prevention is currently off by default.

Signed-off-by: Matt McCutchen <matt@mattmccutchen.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

doc/bundle: Use the more conventional suffix '.bundle'Santi Béjar Sat, 7 Feb 2009 22:21:49 +0000 (23:21 +0100)

doc/bundle: Use the more conventional suffix '.bundle'

Although it does not matter in general it is handled different by
"git clone", as it removes it to make the "humanish" name of the
new repository.

Signed-off-by: Santi Béjar <santi@agolina.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add two extra tests for git rebaseJohannes Schindelin Mon, 9 Feb 2009 05:40:42 +0000 (21:40 -0800)

Add two extra tests for git rebase

Documentation: clarify commits affected by gitk --mergeSitaram Chamarty Fri, 6 Feb 2009 04:40:53 +0000 (10:10 +0530)

Documentation: clarify commits affected by gitk --merge

Signed-off-by: Sitaram Chamarty <sitaramc@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add -p: get rid of Git.pm warnings about unitialized... Stephan Beyer Sun, 8 Feb 2009 17:40:39 +0000 (18:40 +0100)

add -p: get rid of Git.pm warnings about unitialized values

After invoking git add -p I always got the warnings:

Use of uninitialized value $_[3] in exec at Git.pm line 1282.
Use of uninitialized value $args[2] in join or string at Git.pm line 1264.

A bisect showed that these warnings occur in a301973 "add -p: print errors
in separate color" the first time.

They can be reproduced by setting color.ui (or color.interactive) to "auto"
and unsetting color.interactive.help and color.interactive.error.
I am using Perl 5.10.0.

The reason of the warning is that color.interactive.error defaults to
color.interactive.help which defaults to nothing in the specific codepath.
It defaults to 'red bold' some lines above which could lead to the wrong
assumption that it always defaults to 'red bold' now.

This patch lets it default to 'red bold', blowing the warnings away.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Acked-By: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rev-list: fix showing distance when using --bisect-allChristian Couder Sun, 8 Feb 2009 14:54:47 +0000 (15:54 +0100)

rev-list: fix showing distance when using --bisect-all

Before d467a52 ("Make '--decorate' set an explicit 'show_decorations'
flag", Nov 3 2008), commit decorations were shown whenever they exist, and
distances stored in them by "git rev-list --bisect-all" were automatically
shown. d467a52 changed the rule so that commit decorations are not shown
unless rev_info explicitly asks to, with its show_decorations bit, but
forgot that the ones "git rev-list --bisect-all" adds need to be shown.

This patch fixes this old breakage.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: warn about non-submodulesJohannes Schindelin Sat, 7 Feb 2009 13:43:15 +0000 (14:43 +0100)

submodule: warn about non-submodules

Earlier, when you called

git submodule some/bogus/path

Git would silently ignore the path, without warning the user about the
likely mistake. Now it does.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Let ls-files strip trailing slashes in submodules'... Johannes Schindelin Sat, 7 Feb 2009 13:43:03 +0000 (14:43 +0100)

Let ls-files strip trailing slashes in submodules' paths

Tab completion makes it easy to add a trailing slash to a submodule path.
As it is completely clear what the user actually wanted to say, be nice
and strip that slash at the end.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Remove unused normalize_absolute_path()Johannes Sixt Sat, 7 Feb 2009 15:08:31 +0000 (16:08 +0100)

Remove unused normalize_absolute_path()

This function is now superseded by normalize_path_copy().

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Test and fix normalize_path_copy()Johannes Sixt Sat, 7 Feb 2009 15:08:30 +0000 (16:08 +0100)

Test and fix normalize_path_copy()

This changes the test-path-utils utility to invoke normalize_path_copy()
instead of normalize_absolute_path() because the latter is about to be
removed.

The test cases in t0060 are adjusted in two regards:

- normalize_path_copy() more often leaves a trailing slash in the result.
This has no negative side effects because the new user of this function,
longest_ancester_length(), already accounts for this behavior.

- The function can fail.

The tests uncover a flaw in normalize_path_copy(): If there are
sufficiently many '..' path components so that the root is reached, such as
in "/d1/s1/../../d2", then the leading slash was lost. This manifested
itself that (assuming there is a repository at /tmp/foo)

$ git add /d1/../tmp/foo/some-file

reported 'pathspec is outside repository'. This is now fixed.

Moreover, the test case descriptions of t0060 now include the test data and
expected outcome.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix GIT_CEILING_DIRECTORIES on WindowsRené Scharfe Sat, 7 Feb 2009 15:08:29 +0000 (16:08 +0100)

Fix GIT_CEILING_DIRECTORIES on Windows

Using git with GIT_CEILING_DIRECTORIES crashed on Windows due to a failed
assertion in normalize_absolute_path(): This function expects absolute
paths to start with a slash, while on Windows they can start with a drive
letter or a backslash.

This fixes it by using the alternative, normalize_path_copy() instead,
which can handle Windows-style paths just fine.

Secondly, the portability macro PATH_SEP is used instead of expecting
colons to be used as path list delimiter.

The test script t1504 is also changed to help MSYS's bash recognize some
program arguments as path list. (MSYS's bash must translate POSIX-style
path lists to Windows-style path lists, and the heuristic did not catch
some cases.)

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move sanitary_path_copy() to path.c and rename it to... Johannes Sixt Sat, 7 Feb 2009 15:08:28 +0000 (16:08 +0100)

Move sanitary_path_copy() to path.c and rename it to normalize_path_copy()

This function and normalize_absolute_path() do almost the same thing. The
former already works on Windows, but the latter crashes.

In subsequent changes we will remove normalize_absolute_path(). Here we
make the replacement function reusable. On the way we rename it to reflect
that it does some path normalization. Apart from that this is only moving
around code.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make test-path-utils more robust against incorrect useJohannes Sixt Sat, 7 Feb 2009 15:08:27 +0000 (16:08 +0100)

Make test-path-utils more robust against incorrect use

Previously, this test utility happily returned with exit code 0 if garbage
was thrown at it. Now it reports failure if an unknown function name was
given on the command line.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tree.c: allow read_tree_recursive() to traverse gitlink... Lars Hjemli Sun, 25 Jan 2009 00:52:05 +0000 (01:52 +0100)

tree.c: allow read_tree_recursive() to traverse gitlink entries

When the callback function invoked from read_tree_recursive() returns
the value `READ_TREE_RECURSIVE` for a gitlink entry, the traversal will
now continue into the tree connected to the gitlinked commit. This
functionality can be used to allow inter-repository operations, but
since the current users of read_tree_recursive() does not yet support
such operations, they have been modified where necessary to make sure
that they never return READ_TREE_RECURSIVE for gitlink entries (hence
no change in behaviour should be introduces by this patch alone).

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

GIT 1.6.2-rc0 v1.6.2-rc0Junio C Hamano Sat, 7 Feb 2009 19:06:34 +0000 (11:06 -0800)

GIT 1.6.2-rc0

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

Merge branch 'tr/add-p-single'Junio C Hamano Sat, 7 Feb 2009 19:10:16 +0000 (11:10 -0800)

Merge branch 'tr/add-p-single'

* tr/add-p-single:
add -p: import Term::ReadKey with 'require'
add -p: print errors in separate color
add -p: prompt for single characters

Merge branch 'js/filter-branch-submodule'Junio C Hamano Sat, 7 Feb 2009 19:09:48 +0000 (11:09 -0800)

Merge branch 'js/filter-branch-submodule'

* js/filter-branch-submodule:
filter-branch: do not consider diverging submodules a 'dirty worktree'
filter-branch: Fix fatal error on bare repositories

Merge branch 'maint'Junio C Hamano Sat, 7 Feb 2009 18:44:25 +0000 (10:44 -0800)

Merge branch 'maint'

* maint:
GIT 1.6.1.3

Conflicts:
GIT-VERSION-GEN
RelNotes

emacs: Remove the no longer maintained vc-git package.Alexandre Julliard Sat, 7 Feb 2009 13:24:54 +0000 (14:24 +0100)

emacs: Remove the no longer maintained vc-git package.

vc-git is distributed with Emacs since version 22.2, and is maintained
in the Emacs CVS tree. This file is obsolete and causes trouble for
people who want to add contrib/emacs to their load-path.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

git.el: Add some notes about Emacs versions compatibility.Alexandre Julliard Sat, 7 Feb 2009 13:21:58 +0000 (14:21 +0100)

git.el: Add some notes about Emacs versions compatibility.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

git.el: Use integer instead of character constants... Alexandre Julliard Sat, 7 Feb 2009 13:01:26 +0000 (14:01 +0100)

git.el: Use integer instead of character constants in case statement.

This is for compatibility with XEmacs. Reported by Vassili Karpov.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

git.el: Set a regexp for paragraph-separate in log... Alexandre Julliard Tue, 27 Jan 2009 10:59:54 +0000 (11:59 +0100)

git.el: Set a regexp for paragraph-separate in log-edit mode.

This allows using fill-paragraph on the log message without
interference from the various header fields.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

git.el: Make git-run-command-region display the error... Alexandre Julliard Sun, 23 Nov 2008 15:12:45 +0000 (16:12 +0100)

git.el: Make git-run-command-region display the error if any.

This makes it easier to figure out why a commit has failed.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

git.el: Add commands for cherry-pick and revert.Alexandre Julliard Sun, 23 Nov 2008 13:34:48 +0000 (14:34 +0100)

git.el: Add commands for cherry-pick and revert.

Support for cherry-picking and reverting commits, with automatic
formatting of the commit log message. Bound to C-c C-p and C-c C-v
respectively.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

git.el: Add a command to create a new branch.Alexandre Julliard Sun, 23 Nov 2008 13:25:50 +0000 (14:25 +0100)

git.el: Add a command to create a new branch.

Prompts for a branch name, create a new branch at HEAD and switch to
it. Bound to C-c C-b by default.

Based on a patch by Rémi Vanicat <vanicat@debian.org>.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

git.el: Add a checkout command.Alexandre Julliard Sun, 23 Nov 2008 13:16:22 +0000 (14:16 +0100)

git.el: Add a checkout command.

Prompts for a branch name and checks it out. Bound to C-c C-o by
default.

Based on a patch by Rémi Vanicat <vanicat@debian.org>.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>

GIT 1.6.1.3 v1.6.1.3Junio C Hamano Sat, 7 Feb 2009 08:51:47 +0000 (00:51 -0800)

GIT 1.6.1.3

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

add -p: import Term::ReadKey with 'require'Thomas Rast Fri, 6 Feb 2009 19:30:01 +0000 (20:30 +0100)

add -p: import Term::ReadKey with 'require'

eval{use...} is no good because the 'use' is evaluated at compile
time, so manually 'require' it. We need to forward declare the
functions we use, otherwise Perl raises a compilation error.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/maint-remote-remove-mirror'Junio C Hamano Fri, 6 Feb 2009 03:40:41 +0000 (19:40 -0800)

Merge branch 'js/maint-remote-remove-mirror'

* js/maint-remote-remove-mirror:
builtin-remote: make rm operation safer in mirrored repository
builtin-remote: make rm() use properly named variable to hold return value

Merge branch 'js/notes'Junio C Hamano Fri, 6 Feb 2009 03:40:39 +0000 (19:40 -0800)

Merge branch 'js/notes'

* js/notes:
git-notes: fix printing of multi-line notes
notes: fix core.notesRef documentation
Add an expensive test for git-notes
Speed up git notes lookup
Add a script to edit/inspect notes
Introduce commit notes

Conflicts:
pretty.c

Merge branch 'jc/refuse-push-to-current'Junio C Hamano Fri, 6 Feb 2009 03:40:36 +0000 (19:40 -0800)

Merge branch 'jc/refuse-push-to-current'

* jc/refuse-push-to-current:
receive-pack: explain what to do when push updates the current branch

Merge branch 'rc/http-push'Junio C Hamano Fri, 6 Feb 2009 03:40:36 +0000 (19:40 -0800)

Merge branch 'rc/http-push'

* rc/http-push:
http-push: wrap signature of get_remote_object_url
http-push: add back underscore separator before lock token
http-push.c: get_remote_object_url() is only used under USE_CURL_MULTI
http-push: refactor request url creation

Merge branch 'gt/utf8-width'Junio C Hamano Fri, 6 Feb 2009 03:40:35 +0000 (19:40 -0800)

Merge branch 'gt/utf8-width'

* gt/utf8-width:
builtin-blame.c: Use utf8_strwidth for author's names
utf8: add utf8_strwidth()

Merge branch 'jk/head-symref'Junio C Hamano Fri, 6 Feb 2009 03:40:35 +0000 (19:40 -0800)

Merge branch 'jk/head-symref'

* jk/head-symref:
symbolic ref: refuse non-ref targets in HEAD
validate_headref: tighten ref-matching to just branches

Merge branch 'cb/mergetool'Junio C Hamano Fri, 6 Feb 2009 03:40:35 +0000 (19:40 -0800)

Merge branch 'cb/mergetool'

* cb/mergetool:
mergetool: fix running mergetool in sub-directories
mergetool: Add a test for running mergetool in a sub-directory
mergetool: respect autocrlf by using checkout-index

Merge branch 'maint'Junio C Hamano Fri, 6 Feb 2009 03:40:25 +0000 (19:40 -0800)

Merge branch 'maint'

* maint:
Fixed broken git help -w when installing from RPM

Merge branch 'maint-1.6.0' into maintJunio C Hamano Fri, 6 Feb 2009 03:38:58 +0000 (19:38 -0800)

Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
Fixed broken git help -w when installing from RPM

Merge branch 'jc/maint-apply-fix' into maintJunio C Hamano Fri, 6 Feb 2009 02:06:11 +0000 (18:06 -0800)

Merge branch 'jc/maint-apply-fix' into maint

* jc/maint-apply-fix:
builtin-apply.c: do not set bogus mode in check_preimage() for deleted path

Merge branch 'am/maint-push-doc' into maintJunio C Hamano Fri, 6 Feb 2009 02:06:03 +0000 (18:06 -0800)

Merge branch 'am/maint-push-doc' into maint

* am/maint-push-doc:
Documentation: rework src/dst description in git push
Documentation: more git push examples
Documentation: simplify refspec format description

Merge branch 'sg/maint-gitdir-in-subdir' into maintJunio C Hamano Fri, 6 Feb 2009 02:05:43 +0000 (18:05 -0800)

Merge branch 'sg/maint-gitdir-in-subdir' into maint

* sg/maint-gitdir-in-subdir:
Fix gitdir detection when in subdir of gitdir

Merge branch 'lt/maint-wrap-zlib' into maintJunio C Hamano Fri, 6 Feb 2009 02:01:00 +0000 (18:01 -0800)

Merge branch 'lt/maint-wrap-zlib' into maint

* lt/maint-wrap-zlib:
Wrap inflate and other zlib routines for better error reporting

Conflicts:
http-push.c
http-walker.c
sha1_file.c

Merge branch 'jc/maint-split-diff-metainfo' into maintJunio C Hamano Fri, 6 Feb 2009 01:54:17 +0000 (17:54 -0800)

Merge branch 'jc/maint-split-diff-metainfo' into maint

* jc/maint-split-diff-metainfo:
diff.c: output correct index lines for a split diff

Merge branch 'js/maint-all-implies-HEAD' into maintJunio C Hamano Fri, 6 Feb 2009 01:54:12 +0000 (17:54 -0800)

Merge branch 'js/maint-all-implies-HEAD' into maint

* js/maint-all-implies-HEAD:
bundle: allow the same ref to be given more than once
revision walker: include a detached HEAD in --all

Merge branch 'kc/maint-diff-bwi-fix' into maintJunio C Hamano Fri, 6 Feb 2009 01:52:22 +0000 (17:52 -0800)

Merge branch 'kc/maint-diff-bwi-fix' into maint

* kc/maint-diff-bwi-fix:
Fix combined use of whitespace ignore options to diff
test more combinations of ignore-whitespace options to diff

filter-branch: do not consider diverging submodules... Johannes Schindelin Thu, 5 Feb 2009 18:19:33 +0000 (19:19 +0100)

filter-branch: do not consider diverging submodules a 'dirty worktree'

At the end of filter-branch in a non-bare repository, the work tree is
updated with "read-tree -m -u HEAD", to carry the change forward in case
the current branch was rewritten. In order to avoid losing any local
change during this step, filter-branch refuses to work when there are
local changes in the work tree.

This "read-tree -m -u HEAD" operation does not affect what commit is
checked out in a submodule (iow, it does not touch .git/HEAD in a
submodule checkout), and checking if there is any local change to the
submodule is not useful.

Staged submodules _are_ considered to be 'dirty', however, as the
"read-tree -m -u HEAD" could result in loss of staged information
otherwise.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add -p: print errors in separate colorThomas Rast Thu, 5 Feb 2009 08:28:27 +0000 (09:28 +0100)

add -p: print errors in separate color

Print interaction error messages in color.interactive.error, which
defaults to the value of color.interactive.help.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add -p: prompt for single charactersThomas Rast Thu, 5 Feb 2009 08:28:26 +0000 (09:28 +0100)

add -p: prompt for single characters

Use Term::ReadKey, if available and enabled with interactive.singlekey,
to let the user answer add -p's prompts by pressing a single key. We're
not doing the same in the main 'add -i' interface because file selection
etc. may expect several characters.

Two commands take an argument: 'g' can easily cope since it'll just
offer a choice of chunks. '/' now (unconditionally, even without
readkey) offers a chance to enter a regex if none was given.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: minor improvements for Mac OS X (Darwin)Jay Soffian Thu, 5 Feb 2009 06:09:08 +0000 (01:09 -0500)

Makefile: minor improvements for Mac OS X (Darwin)

1) Instead of requesting OLD_ICONV on all Mac OS X versions except for 10.5
(which will break when 10.6 is released), exlicitly request it for versions
older than 10.5.

2) NO_STRLCPY is not needed since Mac OS X 10.2. Noticed by Benjamin Kramer.

Note that uname -r returns the underlying Darwin version, which can be mapped
to Mac OS X version at http://www.opensource.apple.com/darwinsource/

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config.mak.in: define paths without trailing slashPascal Obry Thu, 5 Feb 2009 07:37:24 +0000 (08:37 +0100)

config.mak.in: define paths without trailing slash

The main Makefile defines gitexecdir and template_dir without trailing
slash. config.mak.in should do the same to be consistent.

Signed-off-by: Pascal Obry <pascal@obry.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: fix misdetection of relative pathnamesJunio C Hamano Thu, 5 Feb 2009 08:04:17 +0000 (00:04 -0800)

Makefile: fix misdetection of relative pathnames

The installation rules wanted to differentiate between a template_dir that
is given as an absolute path (e.g. /usr/share/git-core/templates) and a
relative one (e.g. share/git-core/templates) but it was done by checking
if $(abspath $(template_dir)) and $(template_dir) yield the same string.

This was wrong in at least two ways.

* The user can give template_dir with a trailing slash from the command
line to invoke make or from the included config.mak. A directory path
ought to mean the same thing with or without such a trailing slash but
use of $(abspath) means an absolute path with a trailing slash fails
the test.

* Versions of GNU make older than 3.81 do not have $(abspath) to begin
with.

This changes the detection logic to see if the given path begins with a
slash.

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

Fixed broken git help -w when installing from RPMDavid J. Mellor Thu, 5 Feb 2009 04:14:29 +0000 (20:14 -0800)

Fixed broken git help -w when installing from RPM

After the git-core package was renamed to git, git help -w was still looking
for files in /usr/share/doc/git-core-$VERSION instead of
/usr/share/doc/git-$VERSION.

Signed-off-by: David J. Mellor <dmellor@whistlingcat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jc/fsck' (early part)Junio C Hamano Thu, 5 Feb 2009 00:40:15 +0000 (16:40 -0800)

Merge branch 'jc/fsck' (early part)

* 'jc/fsck' (early part):
fsck: check loose objects from alternate object stores by default
fsck: HEAD is part of refs