gitweb.git
Introduce get_merge_bases_many()Junio C Hamano Fri, 27 Jun 2008 16:22:02 +0000 (18:22 +0200)

Introduce get_merge_bases_many()

This introduces a new function get_merge_bases_many() which is a natural
extension of two commit merge base computation. It is given one commit
(one) and a set of other commits (twos), and computes the merge base of
one and a merge across other commits.

This is mostly useful to figure out the common ancestor when iterating
over heads during an octopus merge. When making an octopus between
commits A, B, C and D, we first merge tree of A and B, and then try to
merge C with it. If we were making pairwise merge, we would be recording
the tree resulting from the merge between A and B as a commit, say M, and
then the next round we will be computing the merge base between M and C.

o---C...*
/ .
o---B...M
/ .
o---o---A

But during an octopus merge, we actually do not create a commit M. In
order to figure out that the common ancestor to use for this merge,
instead of computing the merge base between C and M, we can call
merge_bases_many() with one set to C and twos containing A and B.

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

Add new test to ensure git-merge handles more than... Miklos Vajna Fri, 27 Jun 2008 17:06:26 +0000 (19:06 +0200)

Add new test to ensure git-merge handles more than 25 refs.

The old shell version handled only 25 refs but we no longer have this
limitation. Add a test to make sure this limitation will not be
introduced again in the future.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Introduce get_octopus_merge_bases() in commit.cMiklos Vajna Fri, 27 Jun 2008 16:22:00 +0000 (18:22 +0200)

Introduce get_octopus_merge_bases() in commit.c

This is like get_merge_bases() but it works for multiple heads, like
show-branch --merge-base.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-fmt-merge-msg: make it usable from other builtinsMiklos Vajna Fri, 27 Jun 2008 16:21:59 +0000 (18:21 +0200)

git-fmt-merge-msg: make it usable from other builtins

Move all functionality (except config and option parsing) from
cmd_fmt_merge_msg() to fmt_merge_msg(), so that other builtins can use
it without a child process.

All functions have been changed to use strbufs, and now only
cmd_fmt_merge_msg() reads directly from a file / writes anything to
stdout.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move read_cache_unmerged() to read-cache.cMiklos Vajna Fri, 27 Jun 2008 16:21:58 +0000 (18:21 +0200)

Move read_cache_unmerged() to read-cache.c

builtin-read-tree has a read_cache_unmerged() which is useful for other
builtins, for example builtin-merge uses it as well. Move it to
read-cache.c to avoid code duplication.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add new test to ensure git-merge handles pull.twohead... Miklos Vajna Sun, 29 Jun 2008 14:51:38 +0000 (16:51 +0200)

Add new test to ensure git-merge handles pull.twohead and pull.octopus

Test if the given strategies are used and test the case when multiple
strategies are configured using a space separated list.

Also test if the best strategy is picked if none is specified. This is
done by adding a simple test case where recursive detects a rename, but
resolve does not, and verify that finally merge will pick up the
previous.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move parse-options's skip_prefix() to git-compat-util.hMiklos Vajna Fri, 27 Jun 2008 16:21:56 +0000 (18:21 +0200)

Move parse-options's skip_prefix() to git-compat-util.h

builtin-remote.c and parse-options.c both have a skip_prefix() function,
for the same purpose. Move parse-options's one to git-compat-util.h and
let builtin-remote use it as well.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move commit_list_count() to commit.cMiklos Vajna Fri, 27 Jun 2008 16:21:55 +0000 (18:21 +0200)

Move commit_list_count() to commit.c

This function is useful outside builtin-merge-recursive, for example in
builtin-merge.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move split_cmdline() to alias.cMiklos Vajna Fri, 27 Jun 2008 16:21:54 +0000 (18:21 +0200)

Move split_cmdline() to alias.c

split_cmdline() is currently used for aliases only, but later it can be
useful for other builtins as well. Move it to alias.c for now,
indicating that originally it's for aliases, but we'll have it in libgit
this way.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Mon, 30 Jun 2008 07:44:19 +0000 (00:44 -0700)

Merge branch 'maint'

* maint:
doc/rev-parse: clarify reflog vs --until for specifying revisions

Add test results directory to t/.gitignoreBrian Gernhardt Sun, 29 Jun 2008 20:47:56 +0000 (16:47 -0400)

Add test results directory to t/.gitignore

We don't need test results to be committed if we're fixing a test.

Signed-off-by: Brian Gernhardt <benji@silverinsanity.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

doc/rev-parse: clarify reflog vs --until for specifying... Jeff King Mon, 30 Jun 2008 03:27:45 +0000 (23:27 -0400)

doc/rev-parse: clarify reflog vs --until for specifying revisions

The rev-parse manpage introduces the branch@{date} syntax,
and mentions the reflog specifically. However, new users may
not be familiar with the distinction between the reflog and
the commit date, so let's help them out with a "you may be
interested in --until" pointer.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes for 1.6.0Junio C Hamano Sun, 29 Jun 2008 20:34:26 +0000 (13:34 -0700)

Update draft release notes for 1.6.0

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

Documentation: don't assume git-sh-setup and git-parse... jrnieder@uchicago.edu Sun, 29 Jun 2008 16:10:20 +0000 (11:10 -0500)

Documentation: don't assume git-sh-setup and git-parse-remote are in PATH

When git-parse-remote and git-sh-setup are not installed in
$(bindir) anymore, the shell script library won't be found on
user's $PATH in general.

Signed-off-by: Jonathan Nieder <jrnieder@uchicago.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9700: skip when Test::More is not availableJunio C Hamano Sun, 29 Jun 2008 20:21:42 +0000 (13:21 -0700)

t9700: skip when Test::More is not available

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

Merge branch 'maint'Junio C Hamano Sun, 29 Jun 2008 04:08:35 +0000 (21:08 -0700)

Merge branch 'maint'

* maint:
git-svn: don't sanitize remote names in config
git-svn: avoid filling up the disk with temp files.
git cat-file: Fix memory leak in batch mode
fix git config example syntax
avoid off-by-one error in run_upload_archive

git-svn: don't sanitize remote names in configEric Wong Sun, 29 Jun 2008 03:40:32 +0000 (20:40 -0700)

git-svn: don't sanitize remote names in config

The original sanitization code was just taken from the
remotes2config.sh shell script in contrib.

Credit to Avery Pennarun for noticing this mistake, and Junio
for clarifying the rules for config section names:

Junio C Hamano wrote in <7vfxr23s6m.fsf@gitster.siamese.dyndns.org>:

> In
>
> [foo "bar"] baz = value
>
> foo and baz must be config.c::iskeychar() (and baz must be isalpha()), but
> "bar" can be almost anything.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

show_stats(): fix stats width calculationOlivier Marin Fri, 27 Jun 2008 00:18:48 +0000 (02:18 +0200)

show_stats(): fix stats width calculation

Before this patch, name_width becomes negative or null for width values
less than 15 and name_width values greater than 25 (default: 50). This
leads to output random data.

This patch checks for minimal width and name_width values.

Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: remove {show,whatchanged}.difftree confi... Olivier Marin Fri, 27 Jun 2008 00:17:55 +0000 (02:17 +0200)

Documentation: remove {show,whatchanged}.difftree config options

This removes, from the documentation and the bash completion script, the
two config options that were introduced by the git-whatchanged.sh script
and lost in the C rewrite. Today, we can use aliases as an alternative.

Signed-off-by: Olivier Marin <dkr@freesurf.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-svn: avoid filling up the disk with temp files.Avery Pennarun Sat, 28 Jun 2008 23:33:56 +0000 (19:33 -0400)

git-svn: avoid filling up the disk with temp files.

Commit ffe256f9bac8a40ff751a9341a5869d98f72c285 ("git-svn: Speed up fetch")
introduced changes that create a temporary file for each object fetched by
svn. These files should be deleted automatically, but perl apparently
doesn't do this until the process exits (or perhaps when its garbage
collector runs).

This means that on a large fetch, especially with lots of branches, we
sometimes fill up /tmp completely, which prevents the next temp file from
being written completely. This is aggravated by the fact that a new temp
file is created for each updated file, even if that update produces a file
identical to one already in git. Thus, it can happen even if there's lots
of disk space to store the finished repository.

We weren't adequately checking for write errors, so this would result in an
invalid file getting committed, which caused git-svn to fail later with an
invalid checksum.

This patch adds a check to syswrite() so similar problems don't lead to
corruption in the future. It also unlink()'s each temp file explicitly
when we're done with it, so the disk doesn't need to fill up.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Tested-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git cat-file: Fix memory leak in batch modeBjörn Steinbrink Sun, 29 Jun 2008 01:21:25 +0000 (03:21 +0200)

git cat-file: Fix memory leak in batch mode

When run in batch mode, git cat-file never frees the memory for the blob
contents it is printing. This quickly adds up and causes git-svn to be
hardly usable for imports of large svn repos, because it uses cat-file in
batch mode and cat-file's memory usage easily reaches several hundred MB
without any good reason.

Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fix git config example syntaxJoey Hess Sat, 28 Jun 2008 20:02:47 +0000 (16:02 -0400)

fix git config example syntax

git-config expects a space, not '=' between option and value.

Also, quote the value since it contains globs, which some shells will not
pass through unchanged, or will abort if the glob doesn't expand.

Signed-off-by: Joey Hess <joey@kitenet.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

avoid off-by-one error in run_upload_archiveJochen Voss Sat, 28 Jun 2008 16:04:24 +0000 (17:04 +0100)

avoid off-by-one error in run_upload_archive

Make sure that buf has enough space to store the trailing \0 of
the command line argument, too.

Signed-off-by: Jochen Voss <voss@seehuhn.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

GIT-VERSION-GEN: do not fail if a 'HEAD' file exists... Lea Wiemann Sat, 28 Jun 2008 17:13:29 +0000 (19:13 +0200)

GIT-VERSION-GEN: do not fail if a 'HEAD' file exists in the working copy

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit-tree: lift completely arbitrary limit of 16... Johannes Schindelin Fri, 27 Jun 2008 12:24:47 +0000 (13:24 +0100)

commit-tree: lift completely arbitrary limit of 16 parents

There is no really good reason to have a merge with more than 16
parents, but we have a history of giving our users rope.

Combined with the fact that there was no good reason for that
arbitrary limit in the first place, here is an all-too-easy to fix.

Kind of wished-for by Len Brown.

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

shrink git-shell by avoiding redundant dependenciesDmitry Potapov Fri, 27 Jun 2008 20:46:42 +0000 (00:46 +0400)

shrink git-shell by avoiding redundant dependencies

A lot of modules that have nothing to do with git-shell functionality
were linked in, bloating git-shell more than 8 times.

This patch cuts off redundant dependencies by:
1. providing stubs for three functions that make no sense for git-shell;
2. moving quote_path_fully from environment.c to quote.c to make the
later self sufficient;
3. moving make_absolute_path into a new separate file.

The following numbers have been received with the default optimization
settings on master using GCC 4.1.2:

Before:
text data bss dec hex filename
143915 1348 93168 238431 3a35f git-shell

After:
text data bss dec hex filename
17670 788 8232 26690 6842 git-shell

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

help: check early if we have a command, if not try... Christian Couder Sat, 28 Jun 2008 04:35:03 +0000 (06:35 +0200)

help: check early if we have a command, if not try a documentation topic

Before this patch, something like "git help tutorial" did not work,
people had to use "git help gittutorial" which is not very intuitive.

This patch uses the "is_git_command" function to test early if the
argument passed to "git help" is a git command, and if this is not the
case then we prefix the argument with "git" instead of "git-".

This way, things like "git help tutorial" or "git help glossary" will
work fine.

The little downside of this patch is that the "is_git_command" is a
little bit slow.

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

Document the double-dash "rev -- path" disambiguatorJunio C Hamano Thu, 26 Jun 2008 05:16:37 +0000 (22:16 -0700)

Document the double-dash "rev -- path" disambiguator

This is a very well established command line convention that old residents
of the git mailing list knew by heart and nobody even thought about
documenting it explicitly, which was not very nice.

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

Don't use dash commands (git-foo) in tutorial-2Ted Percival Thu, 26 Jun 2008 13:22:19 +0000 (23:22 +1000)

Don't use dash commands (git-foo) in tutorial-2

Signed-off-by: Ted Percival <ted@midg3t.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib.sh: show git init output when in verbose modeLea Wiemann Thu, 26 Jun 2008 18:35:19 +0000 (20:35 +0200)

test-lib.sh: show git init output when in verbose mode

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Fri, 27 Jun 2008 01:12:47 +0000 (18:12 -0700)

Merge branch 'maint'

* maint:
GIT 1.5.5.5
GIT 1.5.4.6
git-shell: accept "git foo" form
diff --check: do not discard error status upon seeing a good line

Merge branch 'maint-1.5.5' into maintJunio C Hamano Fri, 27 Jun 2008 01:08:51 +0000 (18:08 -0700)

Merge branch 'maint-1.5.5' into maint

* maint-1.5.5:
GIT 1.5.5.5
GIT 1.5.4.6
git-shell: accept "git foo" form

Conflicts:

GIT-VERSION-GEN
RelNotes

GIT 1.5.5.5 v1.5.5.5Junio C Hamano Fri, 27 Jun 2008 00:16:50 +0000 (17:16 -0700)

GIT 1.5.5.5

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

Merge branch 'maint-1.5.4' into maint-1.5.5Junio C Hamano Fri, 27 Jun 2008 00:14:03 +0000 (17:14 -0700)

Merge branch 'maint-1.5.4' into maint-1.5.5

* maint-1.5.4:
GIT 1.5.4.6
git-shell: accept "git foo" form

Conflicts:

GIT-VERSION-GEN
RelNotes

GIT 1.5.4.6 v1.5.4.6Junio C Hamano Fri, 27 Jun 2008 00:11:21 +0000 (17:11 -0700)

GIT 1.5.4.6

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

git-shell: accept "git foo" formJunio C Hamano Sun, 2 Dec 2007 06:16:19 +0000 (22:16 -0800)

git-shell: accept "git foo" form

This is a backport of 0a47dc110e042b5bcc63dc94c8d517e67efe9306
to 'maint' to be included in 1.5.6.2 so that older server side
can accept dashless form of request when clients are updated.

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

diff --check: do not discard error status upon seeing... Junio C Hamano Thu, 26 Jun 2008 20:16:33 +0000 (13:16 -0700)

diff --check: do not discard error status upon seeing a good line

"git diff --check" should return non-zero when there was any whitespace
error but the code only paid attention to the error status of the last
new line in the patch.

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

improve for-each-ref test scriptJeff King Thu, 26 Jun 2008 08:08:41 +0000 (04:08 -0400)

improve for-each-ref test script

Previously, we did a sanity check by doing for-each-ref
using each possible format atom. However, we never checked
the actual output produced by that atom, which recently let
an obvious bug go undetected for some time.

While we're at it, also clean up a few '!' into
test_must_fail.

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

Add 'git-p4.allowSubmit' to git-p4Jing Xue Sun, 22 Jun 2008 18:12:39 +0000 (14:12 -0400)

Add 'git-p4.allowSubmit' to git-p4

I'm working with a perforce repo using git-p4. There are some config
files which I need to change locally according to my environment. I'm
using a 'local' git branch to park these changes. And I want to avoid
accidentally checking them into p4 just by doing "git p4 submit"
mindlessly without realizing which branch I'm actually on.

This patch adds a new git config, 'git-p4.allowSubmit', which is a
whitelist of branch names. "git p4 submit" will only allow submissions
from local branches on the list. Useful for preventing inadvertently
submitting from a strictly local branch.

For backward compatibility, if this config is not set at all,
submissions from all branches are allowed.

Signed-off-by: Jing Xue <jingxue@digizenstudio.com>
Acked-By: Simon Hausmann <simon@lst.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Start draft release notes for 1.6.0Junio C Hamano Thu, 26 Jun 2008 07:13:37 +0000 (00:13 -0700)

Start draft release notes for 1.6.0

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

update-hook-example: optionally allow non-fast-forwardDmitry Potapov Wed, 25 Jun 2008 23:14:31 +0000 (03:14 +0400)

update-hook-example: optionally allow non-fast-forward

Sometimes it is desirable to have non-fast-forward branches in a
shared repository. A typical example of that is the 'pu' branch.
This patch extends the format of allowed-users and allow-groups
files by using the '+' sign at the beginning as the mark that
non-fast-forward pushes are permitted to the branch.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Thu, 26 Jun 2008 01:29:14 +0000 (18:29 -0700)

Merge branch 'maint'

* maint:
GIT 1.5.6.1
fix update-hook-example to work with packed tag references
clone: create intermediate directories of destination repo
for-each-ref: implement missing tag values
git-rebase.sh: Add check if rebase is in progress

Fix use of "perl -i" on WindowsAlex Riesen Wed, 25 Jun 2008 18:35:13 +0000 (20:35 +0200)

Fix use of "perl -i" on Windows

The perldiag(1) has following to say about this:

"Can't do inplace edit without backup"

(F) You're on a system such as MS-DOS that gets confused if
you try reading from a deleted (but still opened) file. You
have to say -i.bak, or some such.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

GIT 1.5.6.1 v1.5.6.1Junio C Hamano Thu, 26 Jun 2008 00:09:40 +0000 (17:09 -0700)

GIT 1.5.6.1

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

Merge branch 'sb/rebase'Junio C Hamano Wed, 25 Jun 2008 20:20:26 +0000 (13:20 -0700)

Merge branch 'sb/rebase'

* sb/rebase:
t3404: stricter tests for git-rebase--interactive
api-builtin.txt: update and fix typo

Merge branch 'lw/gitweb'Junio C Hamano Wed, 25 Jun 2008 20:19:53 +0000 (13:19 -0700)

Merge branch 'lw/gitweb'

* lw/gitweb:
gitweb: standarize HTTP status codes

Merge branch 'lt/config-fsync'Junio C Hamano Wed, 25 Jun 2008 20:19:49 +0000 (13:19 -0700)

Merge branch 'lt/config-fsync'

* lt/config-fsync:
Add config option to enable 'fsync()' of object files
Split up default "i18n" and "branch" config parsing into helper routines
Split up default "user" config parsing into helper routine
Split up default "core" config parsing into helper routine

Merge branch 'sr/tests'Junio C Hamano Wed, 25 Jun 2008 20:19:22 +0000 (13:19 -0700)

Merge branch 'sr/tests'

* sr/tests:
Hook up the result aggregation in the test makefile.
A simple script to parse the results from the testcases
Modify test-lib.sh to output stats to t/test-results/*

Conflicts:

t/test-lib.sh

Merge branch 'jh/clone-packed-refs'Junio C Hamano Wed, 25 Jun 2008 20:18:54 +0000 (13:18 -0700)

Merge branch 'jh/clone-packed-refs'

* jh/clone-packed-refs:
Teach "git clone" to pack refs
Prepare testsuite for a "git clone" that packs refs
Move pack_refs() and friends into libgit
Incorporate fetched packs in future object traversal

Merge branch 'lw/perlish'Junio C Hamano Wed, 25 Jun 2008 20:18:46 +0000 (13:18 -0700)

Merge branch 'lw/perlish'

* lw/perlish:
Git.pm: add test suite
t/test-lib.sh: add test_external and test_external_without_stderr

fix update-hook-example to work with packed tag referencesDmitry Potapov Wed, 25 Jun 2008 08:26:55 +0000 (12:26 +0400)

fix update-hook-example to work with packed tag references

The update-hook-example used 'test -f' to check the tag present, which
does not work if the checked reference is packed. This check has been
changed to use 'git rev-parse $tag' instead.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clone: create intermediate directories of destination... Jeff King Wed, 25 Jun 2008 05:41:34 +0000 (01:41 -0400)

clone: create intermediate directories of destination repo

The shell version used to use "mkdir -p" to create the repo
path, but the C version just calls "mkdir". Let's replicate
the old behavior. We have to create the git and worktree
leading dirs separately; while most of the time, the
worktree dir contains the git dir (as .git), the user can
override this using GIT_WORK_TREE.

We can reuse safe_create_leading_directories, but we need to
make a copy of our const buffer to do so. Since
merge-recursive uses the same pattern, we can factor this
out into a global function. This has two other cleanup
advantages for merge-recursive:

1. mkdir_p wasn't a very good name. "mkdir -p foo/bar" actually
creates bar, but this function just creates the leading
directories.

2. mkdir_p took a mode argument, but it was completely
ignored.

Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jc/maint-combine-diff-pre-context' into... Junio C Hamano Wed, 25 Jun 2008 18:20:01 +0000 (11:20 -0700)

Merge branch 'jc/maint-combine-diff-pre-context' into maint

* jc/maint-combine-diff-pre-context:
diff -c/--cc: do not include uninteresting deletion before leading context

Merge branch 'lt/maint-gitdir-relative' into maintJunio C Hamano Wed, 25 Jun 2008 18:19:33 +0000 (11:19 -0700)

Merge branch 'lt/maint-gitdir-relative' into maint

* lt/maint-gitdir-relative:
Make git_dir a path relative to work_tree in setup_work_tree()

Merge branch 'sb/maint-rebase' into maintJunio C Hamano Wed, 25 Jun 2008 18:18:39 +0000 (11:18 -0700)

Merge branch 'sb/maint-rebase' into maint

* sb/maint-rebase:
git-rebase.sh: Add check if rebase is in progress

for-each-ref: implement missing tag valuesJeff King Wed, 25 Jun 2008 16:08:15 +0000 (12:08 -0400)

for-each-ref: implement missing tag values

The "type" and "object" fields for tags were accepted as
valid atoms, but never implemented. Consequently, they
simply returned the empty string, even for valid tags.

Noticed by Lea Wiemann.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

verify-pack: test for detection of index v2 object... Nicolas Pitre Wed, 25 Jun 2008 03:19:44 +0000 (23:19 -0400)

verify-pack: test for detection of index v2 object CRC mismatch

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

verify-pack: check packed object CRC when using index... Nicolas Pitre Wed, 25 Jun 2008 03:19:02 +0000 (23:19 -0400)

verify-pack: check packed object CRC when using index version 2

To do so, check_pack_crc() moved from builtin-pack-objects.c to
pack-check.c where it is more logical to share.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

move show_pack_info() where it belongsNicolas Pitre Wed, 25 Jun 2008 03:18:17 +0000 (23:18 -0400)

move show_pack_info() where it belongs

This is called when verify_pack() has its verbose argument set, and
verbose in this context makes sense only for the actual 'git verify-pack'
command. Therefore let's move show_pack_info() to builtin-verify-pack.c
instead and remove useless verbose argument from verify_pack().

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

optimize verify-pack a bitNicolas Pitre Wed, 25 Jun 2008 03:17:12 +0000 (23:17 -0400)

optimize verify-pack a bit

Using find_pack_entry_one() to get object offsets is rather suboptimal
when nth_packed_object_offset() can be used directly.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clone: create intermediate directories of destination... Jeff King Wed, 25 Jun 2008 05:41:34 +0000 (01:41 -0400)

clone: create intermediate directories of destination repo

The shell version used to use "mkdir -p" to create the repo
path, but the C version just calls "mkdir". Let's replicate
the old behavior. We have to create the git and worktree
leading dirs separately; while most of the time, the
worktree dir contains the git dir (as .git), the user can
override this using GIT_WORK_TREE.

We can reuse safe_create_leading_directories, but we need to
make a copy of our const buffer to do so. Since
merge-recursive uses the same pattern, we can factor this
out into a global function. This has two other cleanup
advantages for merge-recursive:

1. mkdir_p wasn't a very good name. "mkdir -p foo/bar" actually
creates bar, but this function just creates the leading
directories.

2. mkdir_p took a mode argument, but it was completely
ignored.

Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ship sample hooks with .sample suffixJunio C Hamano Wed, 25 Jun 2008 01:45:21 +0000 (18:45 -0700)

Ship sample hooks with .sample suffix

We used to mark hooks we ship as samples by making them unexecutable, but
some filesystems cannot tell what is executable and what is not.

This makes it much more explicit. The hooks are suffixed with .sample
(but now are made executable), so enabling it is still one step operation
(instead of "chmod +x $hook", you would do "mv $hook.sample $hook") but
now they won't get accidentally enabled on systems without executable bit.

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

pre-rebase hook updateJunio C Hamano Wed, 25 Jun 2008 02:05:45 +0000 (19:05 -0700)

pre-rebase hook update

This hook is what I have been using to manage topic branches in git.git,
but have not been updated to the Real Thing for a while.

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

refactor pack structure allocationNicolas Pitre Tue, 24 Jun 2008 22:58:06 +0000 (18:58 -0400)

refactor pack structure allocation

New pack structures are currently allocated in 2 different places
and all members have to be initialized explicitly. This is prone
to errors leading to segmentation faults as found by Teemu Likonen.

Let's have a common place where this structure is allocated, and have
all members explicitly initialized to zero.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test case for pack resilience against corruptionsNicolas Pitre Tue, 24 Jun 2008 01:24:28 +0000 (21:24 -0400)

test case for pack resilience against corruptions

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

implement some resilience against pack corruptionsNicolas Pitre Tue, 24 Jun 2008 01:23:39 +0000 (21:23 -0400)

implement some resilience against pack corruptions

We should be able to fall back to loose objects or alternative packs when
a pack becomes corrupted. This is especially true when an object exists
in one pack only as a delta but its base object is corrupted. Currently
there is no way to retrieve the former object even if the later is
available in another pack or loose.

This patch allows for a delta to be resolved (with a performance cost)
using a base object from a source other than the pack where that delta
is located. Same thing for non-delta objects: rather than failing
outright, a search is made in other packs or used loose when the
currently active pack has it but corrupted.

Of course git will become extremely noisy with error messages when that
happens. However, if the operation succeeds nevertheless, a simple
'git repack -a -f -d' will "fix" the corrupted repository given that all
corrupted objects have a good duplicate somewhere in the object store,
possibly manually copied from another source.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

call init_pack_revindex() lazilyNicolas Pitre Tue, 24 Jun 2008 01:22:14 +0000 (21:22 -0400)

call init_pack_revindex() lazily

This makes life much easier for next patch, as well as being more efficient
when the revindex is actually not used.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 24 Jun 2008 00:52:02 +0000 (17:52 -0700)

Merge branch 'maint'

* maint:
git-svn: make rebuild respect rewriteRoot option
Workaround for AIX mkstemp()

git-svn: make rebuild respect rewriteRoot optionJan Krüger Tue, 24 Jun 2008 00:17:36 +0000 (02:17 +0200)

git-svn: make rebuild respect rewriteRoot option

Suppose someone fetches git-svn-ified commits from another repo and then
attempts to use 'git-svn init --rewrite-root=foo bar'. Using git svn rebase
after that will fail badly:

* For each commit tried by working_head_info, rebuild is called indirectly.
* rebuild will iterate over all commits and skip all of them because the
URL does not match. Because of that no rev_map file is generated at all.
* Thus, rebuild will run once for every commit. This takes ages.
* In the end there still isn't any rev_map file and thus working_head_info
fails.

Addressing this behaviour fixes an apparently not too uncommon problem with
providing git-svn mirrors of Subversion repositories. Some repositories are
accessed using different URLs depending on whether the user has push
privileges or not. In the latter case, an anonymous URL is often used that
differs from the push URL. Providing a mirror that is usable in both cases
becomes a lot more possible with this change.

Signed-off-by: Jan Krüger <jk@jk.gs>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Workaround for AIX mkstemp()Patrick Higgins Mon, 23 Jun 2008 21:33:41 +0000 (15:33 -0600)

Workaround for AIX mkstemp()

The AIX mkstemp will modify it's template parameter to an empty string if
the call fails. This caused a subsequent mkdir to fail.

Signed-off-by: Patrick Higgins <patrick.higgins@cexp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9301-fast-export.sh: Remove debug lineMichele Ballabio Mon, 23 Jun 2008 16:19:23 +0000 (18:19 +0200)

t9301-fast-export.sh: Remove debug line

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Shrink the git binary a bit by avoiding unnecessary... Linus Torvalds Sun, 22 Jun 2008 19:19:25 +0000 (12:19 -0700)

Shrink the git binary a bit by avoiding unnecessary inline functions

So I was looking at the disgusting size of the git binary, and even with
the debugging removed, and using -Os instead of -O2, the size of the text
section was pretty high. In this day and age I guess almost a megabyte of
text isn't really all that surprising, but it still doesn't exactly make
me think "lean and mean".

With -Os, a surprising amount of text space is wasted on inline functions
that end up just being replicated multiple times, and where performance
really isn't a valid reason to inline them. In particular, the trivial
wrapper functions like "xmalloc()" are used _everywhere_, and making them
inline just duplicates the text (and the string we use to 'die()' on
failure) unnecessarily.

So this just moves them into a "wrapper.c" file, getting rid of a tiny bit
of unnecessary bloat. The following numbers are both with "CFLAGS=-Os":

Before:
[torvalds@woody git]$ size git
text data bss dec hex filename
700460 15160 292184 1007804 f60bc git

After:
[torvalds@woody git]$ size git
text data bss dec hex filename
670540 15160 292184 977884 eebdc git

so it saves almost 30k of text-space (it actually saves more than that
with the default -O2, but I don't think that's necessarily a very relevant
number from a "try to shrink git" standpoint).

It might conceivably have a performance impact, but none of this should be
_that_ performance critical. The real cost is not generally in the wrapper
anyway, but in the code it wraps (ie the cost of "xread()" is all in the
read itself, not in the trivial wrapping of it).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Mon, 23 Jun 2008 01:39:37 +0000 (18:39 -0700)

Merge branch 'maint'

* maint:
Extend parse-options test suite
api-parse-options.txt: Introduce documentation for parse options API
parse-options.c: fix documentation syntax of optional arguments
api-builtin.txt: update and fix typo

Extend parse-options test suiteStephan Beyer Sun, 22 Jun 2008 15:04:26 +0000 (17:04 +0200)

Extend parse-options test suite

This patch serves two purposes:
1. test-parse-option.c should be a more complete
example for the parse-options API, and
2. there have been no tests for OPT_CALLBACK,
OPT_DATE, OPT_BIT, OPT_SET_INT and OPT_SET_PTR
before.

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

api-parse-options.txt: Introduce documentation for... Stephan Beyer Sun, 22 Jun 2008 15:04:25 +0000 (17:04 +0200)

api-parse-options.txt: Introduce documentation for parse options API

Add some documentation of basics, macros and callback
implementation of the parse-options API.

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

parse-options.c: fix documentation syntax of optional... Michele Ballabio Sun, 22 Jun 2008 14:39:04 +0000 (16:39 +0200)

parse-options.c: fix documentation syntax of optional arguments

When an argument for an option is optional, short options don't need a
space between the option and the argument, and long options need a "=".
Otherwise, arguments are misinterpreted.

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

api-builtin.txt: update and fix typoStephan Beyer Sat, 21 Jun 2008 23:54:36 +0000 (01:54 +0200)

api-builtin.txt: update and fix typo

Mention NEED_WORK_TREE flag and command-list.txt.
Fix "bulit-in" typo and AsciiDoc-formatting of a paragraph.

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

git-rebase.sh: Add check if rebase is in progressStephan Beyer Sun, 22 Jun 2008 14:07:02 +0000 (16:07 +0200)

git-rebase.sh: Add check if rebase is in progress

"git rebase --continue" and friends gave nonsense errors when there is no
rebase in progress.

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

t3404: stricter tests for git-rebase--interactiveStephan Beyer Sat, 21 Jun 2008 23:55:50 +0000 (01:55 +0200)

t3404: stricter tests for git-rebase--interactive

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

api-builtin.txt: update and fix typoStephan Beyer Sat, 21 Jun 2008 23:54:36 +0000 (01:54 +0200)

api-builtin.txt: update and fix typo

Mention NEED_WORK_TREE flag and command-list.txt.
Fix "bulit-in" typo and AsciiDoc-formatting of a paragraph.

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

Merge branch 'rs/archive-ignore'Junio C Hamano Sun, 22 Jun 2008 21:46:11 +0000 (14:46 -0700)

Merge branch 'rs/archive-ignore'

* rs/archive-ignore:
Teach new attribute 'export-ignore' to git-archive

Merge branch 'lt/racy-empty'Junio C Hamano Sun, 22 Jun 2008 21:34:20 +0000 (14:34 -0700)

Merge branch 'lt/racy-empty'

* lt/racy-empty:
racy-git: an empty blob has a fixed object name

Merge branch 'sn/static'Junio C Hamano Sun, 22 Jun 2008 21:34:09 +0000 (14:34 -0700)

Merge branch 'sn/static'

* sn/static:
config.c: make git_env_bool() static
environment.c: remove unused function

Merge branch 'jc/maint-combine-diff-pre-context'Junio C Hamano Sun, 22 Jun 2008 21:33:56 +0000 (14:33 -0700)

Merge branch 'jc/maint-combine-diff-pre-context'

* jc/maint-combine-diff-pre-context:
diff -c/--cc: do not include uninteresting deletion before leading context

Merge branch 'lt/maint-gitdir-relative'Junio C Hamano Sun, 22 Jun 2008 21:33:53 +0000 (14:33 -0700)

Merge branch 'lt/maint-gitdir-relative'

* lt/maint-gitdir-relative:
Make git_dir a path relative to work_tree in setup_work_tree()

Merge branch 'jk/test'Junio C Hamano Sun, 22 Jun 2008 21:33:02 +0000 (14:33 -0700)

Merge branch 'jk/test'

* jk/test:
enable whitespace checking of test scripts
avoid trailing whitespace in zero-change diffstat lines
avoid whitespace on empty line in automatic usage message
mask necessary whitespace policy violations in test scripts
fix whitespace violations in test scripts

Merge branch 'pb/fast-export'Junio C Hamano Sun, 22 Jun 2008 21:32:58 +0000 (14:32 -0700)

Merge branch 'pb/fast-export'

* pb/fast-export:
builtin-fast-export: Add importing and exporting of revision marks

Merge branch 'mo/status-untracked'Junio C Hamano Sun, 22 Jun 2008 21:32:27 +0000 (14:32 -0700)

Merge branch 'mo/status-untracked'

* mo/status-untracked:
Add configuration option for default untracked files mode
Add argument 'no' commit/status option -u|--untracked-files
Add an optional <mode> argument to commit/status -u|--untracked-files option

Conflicts:

Documentation/git-commit.txt

Merge branch 'kh/update-ref'Junio C Hamano Sun, 22 Jun 2008 21:31:57 +0000 (14:31 -0700)

Merge branch 'kh/update-ref'

* kh/update-ref:
Make old sha1 optional with git update-ref -d
Clean up builtin-update-ref's option parsing

Merge branch 'jn/web'Junio C Hamano Sun, 22 Jun 2008 21:31:49 +0000 (14:31 -0700)

Merge branch 'jn/web'

* jn/web:
gitweb: Separate generating 'sort by' table header
gitweb: Separate filling list of projects info

Merge branch 'rg/gitweb'Junio C Hamano Sun, 22 Jun 2008 21:31:44 +0000 (14:31 -0700)

Merge branch 'rg/gitweb'

* rg/gitweb:
gitweb: remove git_blame and rename git_blame2 to git_blame

Correct documentation for git-push --mirrorShawn O. Pearce Sat, 21 Jun 2008 03:25:25 +0000 (23:25 -0400)

Correct documentation for git-push --mirror

This option behaves more like:

git push $url +refs/*:refs/*

than it does like:

git push $url +refs/heads/*:refs/heads/* +refs/tags/*:refs/tags/*

so we should document it to be more clear about that.

Suggested-by: Marek Zawirski <marek.zawirski@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/README: Add 'Skipping Tests' section below 'Running... Jakub Narebski Fri, 20 Jun 2008 21:10:50 +0000 (23:10 +0200)

t/README: Add 'Skipping Tests' section below 'Running Tests'

Add description of GIT_SKIP_TESTS variable, taken almost verbatim
(adjusting for conventions in t/README) from the commit message in

04ece59 (GIT_SKIP_TESTS: allow users to omit tests that are known to break)

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Print errno upon failure to open the COMMIT_EDITMSG... Cristian Peraferrer Fri, 20 Jun 2008 15:24:20 +0000 (17:24 +0200)

Print errno upon failure to open the COMMIT_EDITMSG file

When the COMMIT_EDITMSG cannot be opened, give more information to the user
by giving the 'errno' information.

Signed-off-by: Cristian Peraferrer <corellian.c@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add target "install-html" the the top level MakefileTeemu Likonen Tue, 10 Jun 2008 08:34:25 +0000 (11:34 +0300)

Add target "install-html" the the top level Makefile

This makes it possible to install html documents from the top level
directory. Previously such target was only in Documentation/Makefile.

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bash: Add more option completions for 'git log'Teemu Likonen Fri, 20 Jun 2008 13:02:10 +0000 (16:02 +0300)

bash: Add more option completions for 'git log'

Options added: --walk-reflogs --stat --numstat --shortstat
--decorate --diff-filter= --color-words

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add a helper script to send patches with Mozilla Thunde... Lukas Sandström Thu, 19 Jun 2008 23:21:33 +0000 (01:21 +0200)

Add a helper script to send patches with Mozilla Thunderbird

The script appp.sh can be used with the External Editor extension for
Mozilla Thunderbird in order to be able to send inline patches in an
easy way.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: standarize HTTP status codesLea Wiemann Thu, 19 Jun 2008 20:03:21 +0000 (22:03 +0200)

gitweb: standarize HTTP status codes

Many error status codes simply default to 403 Forbidden, which is not
correct in most cases. This patch makes gitweb return semantically
correct status codes.

For convenience the die_error function now only takes the status code
without reason as first parameter (e.g. 404 instead of "404 Not
Found"), and it now defaults to 500 (Internal Server Error), even
though the default is not used anywhere.

Also documented status code conventions in die_error.

Signed-off-by: Lea Wiemann <LeWiemann@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config.c: make git_env_bool() staticしらいしななこ Wed, 18 Jun 2008 23:21:11 +0000 (08:21 +0900)

config.c: make git_env_bool() static

This function is not used by any other file.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

environment.c: remove unused functionしらいしななこ Wed, 18 Jun 2008 23:21:09 +0000 (08:21 +0900)

environment.c: remove unused function

get_refs_directory() is not used anywhere.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>