git
13 years agoMerge branch 'maint'
Junio C Hamano [Thu, 31 Mar 2011 02:33:53 +0000 (19:33 -0700)] 
Merge branch 'maint'

* maint:
  parse-remote: typofix

13 years agoparse-remote: typofix
Junio C Hamano [Thu, 31 Mar 2011 02:33:33 +0000 (19:33 -0700)] 
parse-remote: typofix

An earlier patch had a trivial typo that two people did not notice.
Pointed out by Michael Schubert.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosubmodule: process conflicting submodules only once
Nicolas Morey-Chaisemartin [Wed, 30 Mar 2011 05:20:02 +0000 (07:20 +0200)] 
submodule: process conflicting submodules only once

During a merge module_list returns conflicting submodules several times
(stage 1,2,3) which caused the submodules to be used multiple times in
git submodule init, sync, update and status command.

There are 5 callers of module_list; they all read (mode, sha1, stage,
path) tuple, and most of them care only about path.  As a first level
approximation, it should be Ok (in the sense that it does not make things
worse than it currently is) to filter the duplicate paths from module_list
output, but some callers should change their behaviour when the merge in
the superproject still has conflicts.

Notice the higher-stage entries, and emit only one record from
module_list, but while doing so, mark the entry with "U" (not [0-3]) in
the $stage field and null out the SHA-1 part, as the object name for the
lowest stage does not give any useful information to the caller, and this
way any caller that uses the object name would hopefully barf.  Then
update the codepaths for each subcommands this way:

 - "update" should not touch the submodule repository, because we do not
   know what commit should be checked out yet.

 - "status" reports the conflicting submodules as 'U000...000' and does
   not recurse into them (we might later want to make it recurse).

 - The command called by "foreach" may want to do whatever it wants to do
   by noticing the merged status in the superproject itself, so feed the
   path to it from module_list as before, but only once per submodule.

 - "init" and "sync" are unlikely things to do while the superproject is
   still not merged, but as long as a submodule is there in $path, there
   is no point skipping it. It might however want to take the merged
   status of .gitmodules into account, but that is outside of the scope of
   this topic.

Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Thanks-to: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nicolas@morey-chaisemartin.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Wed, 30 Mar 2011 21:10:41 +0000 (14:10 -0700)] 
Merge branch 'maint'

* maint:
  contrib/thunderbird-patch-inline: do not require bash to run the script
  t8001: check the exit status of the command being tested
  strbuf.h: remove a tad stale docs-in-comment and reference api-doc instead
  Typos: t/README
  Documentation/config.txt: make truth value of numbers more explicit
  git-pack-objects.txt: fix grammatical errors
  parse-remote: replace unnecessary sed invocation

13 years agoremote: deprecate --mirror
Jeff King [Wed, 30 Mar 2011 19:53:39 +0000 (15:53 -0400)] 
remote: deprecate --mirror

The configuration created by plain --mirror is dangerous and
useless, and we now have --mirror=fetch and --mirror=push to
replace it. Let's warn the user.

One alternative to this is to try to guess which type the
user wants. In a non-bare repository, a fetch mirror doesn't
make much sense, since it would overwrite local commits. But
in a bare repository, you might use either type, or even
both (e.g., if you are acting as an intermediate drop-point
across two disconnected networks).

So rather than try for complex heuristics, let's keep it
simple. The user knows what they're trying to do, so let
them tell us.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoremote: separate the concept of push and fetch mirrors
Jeff King [Wed, 30 Mar 2011 19:53:19 +0000 (15:53 -0400)] 
remote: separate the concept of push and fetch mirrors

git-remote currently has one option, "--mirror", which sets
up mirror configuration which can be used for either
fetching or pushing. It looks like this:

  [remote "mirror"]
    url = wherever
    fetch = +refs/*:refs/*
    mirror = true

However, a remote like this can be dangerous and confusing.
Specifically:

  1. If you issue the wrong command, it can be devastating.
     You are not likely to "push" when you meant to "fetch",
     but "git remote update" will try to fetch it, even if
     you intended the remote only for pushing. In either
     case, the results can be quite destructive. An
     unintended push will overwrite or delete remote refs,
     and an unintended fetch can overwrite local branches.

  2. The tracking setup code can produce confusing results.
     The fetch refspec above means that "git checkout -b new
     master" will consider refs/heads/master to come from
     the remote "mirror", even if you only ever intend to
     push to the mirror. It will set up the "new" branch to
     track mirror's refs/heads/master.

  3. The push code tries to opportunistically update
     tracking branches. If you "git push mirror foo:bar",
     it will see that we are updating mirror's
     refs/heads/bar, which corresponds to our local
     refs/heads/bar, and will update our local branch.

To solve this, we split the concept into "push mirrors" and
"fetch mirrors". Push mirrors set only remote.*.mirror,
solving (2) and (3), and making an accidental fetch write
only into FETCH_HEAD. Fetch mirrors set only the fetch
refspec, meaning an accidental push will not force-overwrite
or delete refs on the remote end.

The new syntax is "--mirror=<fetch|push>". For
compatibility, we keep "--mirror" as-is, setting up both
types simultaneously.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoremote: disallow some nonsensical option combinations
Jeff King [Wed, 30 Mar 2011 19:52:52 +0000 (15:52 -0400)] 
remote: disallow some nonsensical option combinations

It doesn't make sense to use "-m" on a mirror, since "-m"
sets up the HEAD symref in the remotes namespace, but with
mirror, we are by definition not using a remotes namespace.

Similarly, it does not make much sense to specify refspecs
with --mirror. For a mirror you plan to push to, those
refspecs will be ignored. For a mirror you are fetching
from, there is no point in mirroring, since the refspec
specifies everything you want to grab.

There is one case where "--mirror -t <X>" would be useful.
Because <X> is used as-is in the refspec, and because we
append it to to refs/, you could mirror a subset of the
hierarchy by doing:

  git remote add --mirror -t 'tags/*'

But using anything besides a single branch as an argument to
"-t" is not documented and only happens to work, so closing
it off is not a serious regression.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogrep: allow -E and -n to be turned on by default via configuration
Joe Ratterman [Wed, 30 Mar 2011 19:31:05 +0000 (14:31 -0500)] 
grep: allow -E and -n to be turned on by default via configuration

Add two configration variables grep.extendedRegexp and grep.lineNumbers to
allow the user to skip typing -E and -n on the command line, respectively.

Scripts that are meant to be used by random users and/or in random
repositories now have use -G and/or --no-line-number options as
appropriately to override the settings in the repository or user's
~/.gitconfig settings. Just because the script didn't say "git grep -n" no
longer guarantees that the output from the command will not have line
numbers.

Signed-off-by: Joe Ratterman <jratt0@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agocontrib/thunderbird-patch-inline: do not require bash to run the script
Maxin john [Wed, 30 Mar 2011 08:52:23 +0000 (09:52 +0100)] 
contrib/thunderbird-patch-inline: do not require bash to run the script

The script does not have to be run under bash, but any POSIX compliant
shell would do, as it does not use any bash-isms.

It may be written under a different style than what is recommended in
Documentation/CodingGuidelines, but that is a different matter.

While at it, fix obvious typos in the comment.

Signed-off-by: Maxin B. John <maxin@maxinbjohn.info>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot8001: check the exit status of the command being tested
Junio C Hamano [Wed, 30 Mar 2011 19:22:05 +0000 (12:22 -0700)] 
t8001: check the exit status of the command being tested

Avoid running the command being tested as an upstream of a pipe;
doing so will lose its exit status.

While at it, modernise the style of the script.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agostrbuf.h: remove a tad stale docs-in-comment and reference api-doc instead
Michael Witten [Tue, 15 Feb 2011 23:12:04 +0000 (23:12 +0000)] 
strbuf.h: remove a tad stale docs-in-comment and reference api-doc instead

Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoTypos: t/README
Michael Witten [Tue, 22 Feb 2011 17:15:00 +0000 (17:15 +0000)] 
Typos: t/README

Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoDocumentation/config.txt: make truth value of numbers more explicit
Carlos Martín Nieto [Wed, 30 Mar 2011 10:22:32 +0000 (12:22 +0200)] 
Documentation/config.txt: make truth value of numbers more explicit

Change the order to 1/0 to have the same true/false order as the rest
of the possibilities for a boolean variable in order not not confuse
users.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-pack-objects.txt: fix grammatical errors
Stephen Boyd [Wed, 30 Mar 2011 09:00:06 +0000 (02:00 -0700)] 
git-pack-objects.txt: fix grammatical errors

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoparse-remote: replace unnecessary sed invocation
Stephen Boyd [Wed, 30 Mar 2011 08:48:40 +0000 (01:48 -0700)] 
parse-remote: replace unnecessary sed invocation

Just use parameter expansion instead.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'svn-fe' of git://repo.or.cz/git/jrn
Junio C Hamano [Wed, 30 Mar 2011 17:49:13 +0000 (10:49 -0700)] 
Merge branch 'svn-fe' of git://repo.or.cz/git/jrn

* 'svn-fe' of git://repo.or.cz/git/jrn:
  tests: kill backgrounded processes more robustly
  vcs-svn: a void function shouldn't try to return something
  tests: make sure input to sed is newline terminated
  vcs-svn: add missing cast to printf argument

13 years agotests: kill backgrounded processes more robustly
Jeff King [Wed, 30 Mar 2011 03:30:17 +0000 (23:30 -0400)] 
tests: kill backgrounded processes more robustly

t0081 creates several background processes that write to a fifo and
then go to sleep for a while (so the reader of the fifo does not see
EOF).

Each background process is made in a curly-braced block in the shell,
and after we are done reading from the fifo, we use "kill $!" to kill
it off.

For a simple, single-command process, this works reliably and kills
the child sleep process. But for more complex commands like
"make_some_output && sleep", the results are less predictable. When
executing under bash, we end up with a subshell that gets killed by
the $! but leaves the sleep process still alive.

This is bad not only for process hygeine (we are leaving random sleep
processes to expire after a while), but also interacts badly with the
"prove" command. When prove executes a test, it does not realize the
test is done when it sees SIGCHLD, but rather waits until the test's
stdout pipe is closed. The orphaned sleep process may keep that pipe
open via test-lib's file descriptor 5, causing prove to hang for 100
seconds.

The solution is to explicitly use a subshell and to exec the final
sleep process, so that when we "kill $!" we get the process id of the
sleep process.

[jn: original patch by Jeff had some additional bits:

   1. Wrap the "kill" in a test_when_finished, since we want
      to clean up the process whether the test succeeds or not.

   2. The "kill" is part of our && chain for test success. It
      probably won't fail, but it can if the process has
      expired before we manage to kill it. So let's mark it
      as OK to fail.

 I'm postponing that for now.]

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Tue, 29 Mar 2011 21:09:15 +0000 (14:09 -0700)] 
Merge branch 'maint'

* maint:
  HOME must be set before calling git-init when creating test repositories

13 years agoMerge branch 'jc/fetch-progressive-stride'
Junio C Hamano [Tue, 29 Mar 2011 21:09:08 +0000 (14:09 -0700)] 
Merge branch 'jc/fetch-progressive-stride'

* jc/fetch-progressive-stride:
  Fix potential local deadlock during fetch-pack

13 years agoMerge branches 'sp/maint-fetch-pack-stop-early' and 'sp/maint-upload-pack-stop-early'
Junio C Hamano [Tue, 29 Mar 2011 21:09:02 +0000 (14:09 -0700)] 
Merge branches 'sp/maint-fetch-pack-stop-early' and 'sp/maint-upload-pack-stop-early'

* sp/maint-fetch-pack-stop-early:
  enable "no-done" extension only when fetching over smart-http

* sp/maint-upload-pack-stop-early:
  enable "no-done" extension only when serving over smart-http

13 years agovcs-svn: a void function shouldn't try to return something
Michael Witten [Tue, 29 Mar 2011 17:31:30 +0000 (17:31 +0000)] 
vcs-svn: a void function shouldn't try to return something

As v1.7.4-rc0~184 (2010-10-04) and C99 §6.8.6.4.1 remind us, standard
C does not permit returning an expression of type void, even for a
tail call.

Noticed with gcc -pedantic:

 vcs-svn/svndump.c: In function 'handle_node':
 vcs-svn/svndump.c:213:3: warning: ISO C forbids 'return' with expression,
  in function returning void [-pedantic]

[jn: with simplified log message]

Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agoRevert two "no-done" reverts
Junio C Hamano [Tue, 29 Mar 2011 19:29:10 +0000 (12:29 -0700)] 
Revert two "no-done" reverts

Last night I had to make these two emergency reverts, but now we have a
better understanding of which part of the topic was broken, let's get rid
of the revert to fix it correctly.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoenable "no-done" extension only when serving over smart-http
Junio C Hamano [Tue, 29 Mar 2011 17:24:59 +0000 (10:24 -0700)] 
enable "no-done" extension only when serving over smart-http

Do not advertise no-done capability when upload-pack is not serving over
smart-http, as there is no way for this server to know when it should stop
reading in-flight data from the client, even though it is necessary to
drain all the in-flight data in order to unblock the client.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoFix potential local deadlock during fetch-pack
Junio C Hamano [Tue, 29 Mar 2011 17:06:19 +0000 (10:06 -0700)] 
Fix potential local deadlock during fetch-pack

The fetch-pack/upload-pack protocol relies on the underlying transport
(local pipe or TCP socket) to have enough slack to allow one window worth
of data in flight without blocking the writer.  Traditionally we always
relied on being able to have two windows of 32 "have"s in flight (roughly
3k bytes) to stream.

The recent "progressive-stride" change allows "fetch-pack" to send up to
1024 "have"s without reading any response from "upload-pack".  The
outgoing pipe of "upload-pack" can be clogged with many ACK and NAK that
are unread, while "fetch-pack" is still stuffing its outgoing pipe with
more "have"s, leading to a deadlock.

Revert the change unless we are in stateless rpc (aka smart-http) mode, as
using a large window full of "have"s is still a good way to help reduce
the number of back-and-forth, and there is no buffering issue there (it is
strictly "ping-pong" without an overlap).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoenable "no-done" extension only when fetching over smart-http
Junio C Hamano [Tue, 29 Mar 2011 17:16:29 +0000 (10:16 -0700)] 
enable "no-done" extension only when fetching over smart-http

When 'no-done' protocol extension is used, the upload-pack (i.e. the
server side) process stops listening to the fetch-pack after issuing the
final NAK, and starts sending the generated pack data back, but there may
be more "have" send by the latter in flight that the fetch-pack is
expecting to be responded with ACK/NAK.  This will typically result in a
deadlock (both will block on write that the other end never reads) or
SIGPIPE on the fetch-pack end (upload-pack will finish writing a small
pack and goes away).

Disable it unless fetch-pack is running under smart-http, where there is
no such streaming issue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
13 years agoHOME must be set before calling git-init when creating test repositories
Alex Riesen [Sat, 26 Mar 2011 18:46:34 +0000 (19:46 +0100)] 
HOME must be set before calling git-init when creating test repositories

Otherwise the created test repositories will be affected by users ~/.gitconfig.
For example, setting core.logAllrefupdates in users config will make all
calls to "git config --unset core.logAllrefupdates" fail which will break
the first test which uses the statement and expects it to succeed.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agotests: make sure input to sed is newline terminated
Jonathan Nieder [Tue, 29 Mar 2011 03:08:20 +0000 (22:08 -0500)] 
tests: make sure input to sed is newline terminated

POSIX only requires sed to work on text files and because it does
not end with a newline, this commit's content is not a text file.
Add a newline to fix it.  Without this change, OS X sed helpfully
adds a newline to actual.message, causing t9010.13 to fail.

Reported-by: Torsten Bögershausen <tboegi@web.de>
Tested-by: Brian Gernhardt <benji@silverinsanity.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agoRevert "fetch-pack: Implement no-done capability"
Junio C Hamano [Tue, 29 Mar 2011 06:35:39 +0000 (23:35 -0700)] 
Revert "fetch-pack: Implement no-done capability"

This reverts commit 761ecf0bc7b6cddf311f00877c59e6381cdbdeea.

13 years agoRevert "upload-pack: Implement no-done capability"
Junio C Hamano [Tue, 29 Mar 2011 06:33:51 +0000 (23:33 -0700)] 
Revert "upload-pack: Implement no-done capability"

This reverts 3e63b21 (upload-pack: Implement no-done capability,
2011-03-14).  Together with 761ecf0 (fetch-pack: Implement no-done
capability, 2011-03-14) it seems to make the fetch-pack process out of
sync and makes it keep talking long after upload-pack stopped listening to
it, terminating the process with SIGPIPE.

13 years agoMerge branch 'maint'
Junio C Hamano [Mon, 28 Mar 2011 21:17:17 +0000 (14:17 -0700)] 
Merge branch 'maint'

* maint:
  git tag documentation grammar fixes and readability updates
  grep: Add the option '--line-number'

13 years agogit tag documentation grammar fixes and readability updates
Michael Witten [Mon, 28 Mar 2011 15:11:49 +0000 (15:11 +0000)] 
git tag documentation grammar fixes and readability updates

... with help from Eric Raible.

In addition, describe the use of GIT_COMMITTER_DATE more comprehensively
by including "date-formats.txt"

Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agotests: fix overeager scrubbing of environment variables
Jens Lehmann [Mon, 28 Mar 2011 19:16:09 +0000 (21:16 +0200)] 
tests: fix overeager scrubbing of environment variables

In commit 95a1d12e9b9f ("tests: scrub environment of GIT_* variables") all
environment variables starting with "GIT_" were unset for the tests using
a perl script rather than unsetting them one by one. Only three exceptions
were made to make them work as before: "GIT_TRACE*", "GIT_DEBUG*" and
"GIT_USE_LOOKUP".

Unfortunately some environment variables used by the test framework itself
were not added to the exceptions and thus stopped working when given
before the make command instead of after it. Those are:

- GIT_NOTES_TIMING_TESTS
- GIT_PATCHID_TIMING_TESTS
- GIT_PROVE_OPTS
- GIT_REMOTE_SVN_TEST_BIG_FILES
- GIT_SKIP_TESTS
- GIT_TEST*
- GIT_VALGRIND_OPTIONS

I noticed that when skipping a test the way I was used to suddenly failed:

GIT_SKIP_TESTS='t1234' GIT_TEST_OPTS='--root=/dev/shm' make -j10 test

This should work according to t/README, but didn't anymore, so let's fix
that by adding them to the exception list. And to avoid having a long
regexp put the exceptions in a separate variable using nicer formatting.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Thanks-to: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogrep: Add the option '--line-number'
Joe Ratterman [Mon, 28 Mar 2011 18:11:55 +0000 (13:11 -0500)] 
grep: Add the option '--line-number'

This is a synonym for the existing '-n' option, matching GNU grep.

Signed-off-by: Joe Ratterman <jratt0@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoImprove test for pthreads flag
Giuseppe Bilotta [Mon, 28 Mar 2011 07:39:59 +0000 (09:39 +0200)] 
Improve test for pthreads flag

When compiling with CC=clang using Clang 1.1 as shipped by Debian
unstable (package version 2.7-3), the -mt flag is sufficient to compile
during the `configure` test. However, building git would then fail at
link time complaining about missing symbols such as `pthread_key_create'
and `pthread_create'.

Work around this issue by adding pthread key creation to the pthreads
configure test source.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agovcs-svn: add missing cast to printf argument
Jonathan Nieder [Mon, 28 Mar 2011 00:38:15 +0000 (19:38 -0500)] 
vcs-svn: add missing cast to printf argument

gcc -m32 correctly warns:

 vcs-svn/fast_export.c: In function 'fast_export_commit':
 vcs-svn/fast_export.c:54:2: warning: format '%llu' expects
   argument of type 'long long unsigned int', but argument 2
   has type 'unsigned int' [-Wformat]

Fix it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agovcs-svn: add missing cast to printf argument
Jonathan Nieder [Sun, 27 Mar 2011 17:19:14 +0000 (12:19 -0500)] 
vcs-svn: add missing cast to printf argument

gcc -m32 correctly warns:

 vcs-svn/fast_export.c: In function 'fast_export_commit':
 vcs-svn/fast_export.c:54:2: warning: format '%llu' expects
   argument of type 'long long unsigned int', but argument 2
   has type 'unsigned int' [-Wformat]

Fix it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agoUpdate draft release note to 1.7.5
Junio C Hamano [Sun, 27 Mar 2011 03:17:15 +0000 (20:17 -0700)] 
Update draft release note to 1.7.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'mg/rev-list-n-parents'
Junio C Hamano [Sun, 27 Mar 2011 03:13:17 +0000 (20:13 -0700)] 
Merge branch 'mg/rev-list-n-parents'

* mg/rev-list-n-parents:
  tests: avoid nonportable {foo,bar} glob
  rev-list --min-parents,--max-parents: doc, test and completion
  revision.c: introduce --min-parents and --max-parents options
  t6009: use test_commit() from test-lib.sh

13 years agoMerge branch 'js/remove-unused-variables'
Junio C Hamano [Sun, 27 Mar 2011 03:13:17 +0000 (20:13 -0700)] 
Merge branch 'js/remove-unused-variables'

* js/remove-unused-variables:
  Remove unused variables

13 years agoMerge branch 'jp/completion-help-alias'
Junio C Hamano [Sun, 27 Mar 2011 03:13:17 +0000 (20:13 -0700)] 
Merge branch 'jp/completion-help-alias'

* jp/completion-help-alias:
  git-completion: Add git help completion for aliases

13 years agoMerge branch 'jc/index-update-if-able'
Junio C Hamano [Sun, 27 Mar 2011 03:13:16 +0000 (20:13 -0700)] 
Merge branch 'jc/index-update-if-able'

* jc/index-update-if-able:
  update $GIT_INDEX_FILE when there are racily clean entries
  diff/status: refactor opportunistic index update

13 years agoMerge branch 'jk/checkout-orphan-warning'
Junio C Hamano [Sun, 27 Mar 2011 03:13:16 +0000 (20:13 -0700)] 
Merge branch 'jk/checkout-orphan-warning'

* jk/checkout-orphan-warning:
  checkout: tweak detached-orphan warning format
  checkout: clear commit marks after detached-orphan check
  checkout: add basic tests for detached-orphan warning

13 years agoMerge branch 'jc/maint-rerere-in-workdir'
Junio C Hamano [Sun, 27 Mar 2011 03:13:16 +0000 (20:13 -0700)] 
Merge branch 'jc/maint-rerere-in-workdir'

* jc/maint-rerere-in-workdir:
  rerere: make sure it works even in a workdir attached to a young repository

13 years agoMerge branch 'nd/index-doc'
Junio C Hamano [Sun, 27 Mar 2011 03:13:15 +0000 (20:13 -0700)] 
Merge branch 'nd/index-doc'

* nd/index-doc:
  doc: technical details about the index file format
  doc: technical details about the index file format

13 years agoMerge branch 'jc/fetch-progressive-stride'
Junio C Hamano [Sun, 27 Mar 2011 03:13:15 +0000 (20:13 -0700)] 
Merge branch 'jc/fetch-progressive-stride'

* jc/fetch-progressive-stride:
  fetch-pack: use smaller handshake window for initial request
  fetch-pack: progressively use larger handshake windows
  fetch-pack: factor out hardcoded handshake window size

Conflicts:
builtin/fetch-pack.c

13 years agoMerge branch 'svn-fe' of git://repo.or.cz/git/jrn
Junio C Hamano [Sat, 26 Mar 2011 18:35:41 +0000 (11:35 -0700)] 
Merge branch 'svn-fe' of git://repo.or.cz/git/jrn

* 'svn-fe' of git://repo.or.cz/git/jrn:
  vcs-svn: handle log message with embedded NUL
  vcs-svn: avoid unnecessary copying of log message and author
  vcs-svn: remove buffer_read_string
  vcs-svn: make reading of properties binary-safe

13 years agoMerge git-gui 0.14.0
Junio C Hamano [Sat, 26 Mar 2011 17:42:26 +0000 (10:42 -0700)] 
Merge git-gui 0.14.0

13 years agovcs-svn: handle log message with embedded NUL
Jonathan Nieder [Sat, 26 Mar 2011 05:49:37 +0000 (00:49 -0500)] 
vcs-svn: handle log message with embedded NUL

Pass the log message by strbuf instead of as a C-style string and use
fwrite instead of printf to write it to fast-import so embedded '\0'
bytes can be preserved.

Currently "git log" doesn't show the embedded NULs but "git cat-file
commit" can.

While at it, stop including system headers from repo_tree.h.  git
source files need to include git-compat-util.h (or cache.h or
builtin.h) sooner to ensure the appropriate feature test macros are
defined.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: avoid unnecessary copying of log message and author
Jonathan Nieder [Fri, 25 Mar 2011 04:10:00 +0000 (23:10 -0500)] 
vcs-svn: avoid unnecessary copying of log message and author

Use strbuf_swap when storing the svn:log and svn:author properties, so
pointers to rather than the contents of buffers get copied.  The main
effect should be to make the code a little easier to read.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: remove buffer_read_string
Jonathan Nieder [Fri, 25 Mar 2011 04:09:19 +0000 (23:09 -0500)] 
vcs-svn: remove buffer_read_string

All previous users of buffer_read_string have already been converted
to use the more intuitive buffer_read_binary, so remove the old API to
avoid some confusion.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: make reading of properties binary-safe
Jonathan Nieder [Sat, 26 Mar 2011 05:15:10 +0000 (00:15 -0500)] 
vcs-svn: make reading of properties binary-safe

svn-fe errors out on revision 59151 of the ASF repository:

 fatal: invalid dump: unexpected end of file

The proximate cause is a property with an embedded NUL character.
Previously such anomalies were ignored but commit c9d1c8ba
(2010-12-28) introduced a check strlen(val) == len to avoid reading
uninitialized data when a property list ends early and unfortunately
this test does not distinguish between "foo" followed by EOF and the
string "foo\0bar\0baz".

Fix it by using buffer_read_binary to read to a strbuf and checking
the actual length read.  Most consumers of properties still use
C-style strings, so in practice an author or log message with embedded
NULs will be truncated, but a least this way svn-fe won't error out
(fixing the regression).

Reported-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agoSync with 1.7.4.2
Junio C Hamano [Sat, 26 Mar 2011 00:57:08 +0000 (17:57 -0700)] 
Sync with 1.7.4.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.4.2 v1.7.4.2
Junio C Hamano [Sat, 26 Mar 2011 00:56:14 +0000 (17:56 -0700)] 
Git 1.7.4.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agopull: do not clobber untracked files on initial pull
Jeff King [Fri, 25 Mar 2011 18:13:31 +0000 (14:13 -0400)] 
pull: do not clobber untracked files on initial pull

For a pull into an unborn branch, we do not use "git merge"
at all. Instead, we call read-tree directly. However, we
used the --reset parameter instead of "-m", which turns off
the safety features.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agomerge: merge unborn index before setting ref
Jeff King [Fri, 25 Mar 2011 18:10:38 +0000 (14:10 -0400)] 
merge: merge unborn index before setting ref

When we merge into an unborn branch, there are basically two
steps:

  1. Write the sha1 of the new commit into the ref pointed
     to by HEAD.

  2. Update the index with the new content, and check it out
     to the working tree.

We currently do them in this order. However, (2) is the step
that is much more likely to fail, since it can be blocked by
things like untracked working tree files. When it does, the
merge fails and we are left with an empty index but an
updated HEAD.

This patch switches the order, so that a failure in updating
the index leaves us unchanged. Of course, a failure in
updating the ref now leaves us with an updated index and
mis-matched HEAD. That is arguably not much better, but it
is probably less likely to actually happen.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot7607: clean up stray untracked file
Jeff King [Fri, 25 Mar 2011 18:09:03 +0000 (14:09 -0400)] 
t7607: clean up stray untracked file

This file ends up conflicting with the test just after it
(causing the "git merge" to fail).  Neither test is to blame
for the bug, though. It looks like the merge in 1a9fe45
(Merge branch 'tr/merge-unborn-clobber', 2011-02-09) is what
caused the conflict.

We didn't notice because the follow-on test is already
marked as expect_failure (even though it has since been
fixed, and now succeeds once the untracked file is moved out
of the way).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot7607: mark known breakage in test 11 as fixed
Jeff King [Fri, 25 Mar 2011 18:08:36 +0000 (14:08 -0400)] 
t7607: mark known breakage in test 11 as fixed

This was fixed by 1d718a51 (do not overwrite untracked
symlinks, 2011-02-20).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: Fix handling of fractional timezones in parse_date
Jakub Narebski [Fri, 25 Mar 2011 19:20:49 +0000 (20:20 +0100)] 
gitweb: Fix handling of fractional timezones in parse_date

Fractional timezones, like -0330 (NST used in Canada) or +0430
(Afghanistan, Iran DST), were not handled properly in parse_date; this
means values such as 'minute_local' and 'iso-tz' were not generated
correctly.

This was caused by two mistakes:

* sign of timezone was applied only to hour part of offset, and not
  as it should be also to minutes part (this affected only negative
  fractional timezones).

* 'int $h + $m/60' is 'int($h + $m/60)' and not 'int($h) + $m/60',
  so fractional part was discarded altogether ($h is hours, $m is
  minutes, which is always less than 60).

Note that positive fractional timezones +0430, +0530 and +1030 can be
found as authortime in git.git repository itself.

For example http://repo.or.cz/w/git.git/commit/88d50e7 had authortime
of "Fri, 8 Jan 2010 18:48:07 +0000 (23:48 +0530)", which is not marked
with 'atnight', when "git show 88d50e7" gives correct author date of
"Sat Jan 9 00:18:07 2010 +0530".

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'ss/git-gui-mergetool' gitgui-0.14.0
Pat Thoyts [Fri, 25 Mar 2011 08:26:47 +0000 (08:26 +0000)] 
Merge branch 'ss/git-gui-mergetool'

13 years agogit-gui: detect the use of MUI langauge packs on Windows
Pat Thoyts [Fri, 18 Feb 2011 13:42:54 +0000 (13:42 +0000)] 
git-gui: detect the use of MUI langauge packs on Windows

The Tcl msgcat package doesn't detect the use of a multi-lingual language
pack on Windows 7. This means that a user may have their display language
set to Japanese but the system installed langauge was English.
This patch reads the relevent registry key to fix this before loading in
the locale specific parts of git-gui.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
13 years agotests: avoid nonportable {foo,bar} glob
Jonathan Nieder [Thu, 24 Mar 2011 08:21:24 +0000 (03:21 -0500)] 
tests: avoid nonportable {foo,bar} glob

Unlike bash and ksh, dash and busybox ash do not support brace
expansion (as in 'echo {hello,world}').  So when dash is sh,
t6009.13 (set up dodecapus) ends up pass a string beginning with
"root{1,2," to "git merge" verbatim and the test fails.

Fix it by introducing a variable to hold the list of parents for
the dodecapus and populating it in a more low-tech way.

While at it, simplify a little by combining this setup code with the
test it sets up for.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agomerge: merge with the default upstream branch without argument
Junio C Hamano [Thu, 24 Mar 2011 06:48:24 +0000 (23:48 -0700)] 
merge: merge with the default upstream branch without argument

"git merge" without specifying any commit is a no-op by default.

A new option merge.defaultupstream can be set to true to cause such an
invocation of the command to merge the upstream branches configured for
the current branch by using their last observed values stored in their
remote tracking branches.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agomerge: match the help text with the documentation
Jared Hance [Thu, 10 Feb 2011 23:52:41 +0000 (18:52 -0500)] 
merge: match the help text with the documentation

We used to be very casual in terminology and used <branch>, <ref> and
<rev> more or less interchangeably with <commit>.  Match the help text
given by "git merge -h" with that of the documentation.

Signed-off-by: Jared Hance <jaredhance@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorerere: make sure it works even in a workdir attached to a young repository
Junio C Hamano [Fri, 11 Mar 2011 00:02:50 +0000 (16:02 -0800)] 
rerere: make sure it works even in a workdir attached to a young repository

The git-new-workdir script in contrib/ makes a new work tree by sharing
many subdirectories of the .git directory with the original repository.
When rerere.enabled is set in the original repository, but the user has
not encountered any conflicts yet, the original repository may not yet
have .git/rr-cache directory.

When rerere wants to run in a new work tree created from such a young
original repository, it fails to mkdir(2) .git/rr-cache that is a symlink
to a yet-to-be-created directory.

There are three possible approaches to this:

 - A naive solution is not to create a symlink in the git-new-workdir
   script to a directory the original does not have (yet).  This is not a
   solution, as we tend to lazily create subdirectories of .git/, and
   having rerere.enabled configuration set is a strong indication that the
   user _wants_ to have this lazy creation to happen;

 - We could always create .git/rr-cache upon repository creation.  This is
   tempting but will not help people with existing repositories.

 - Detect this case by seeing that mkdir(2) failed with EEXIST, checking
   that the path is a symlink, and try running mkdir(2) on the link
   target.

This patch solves the issue by doing the third one.

Strictly speaking, this is incomplete.  It does not attempt to handle
relative symbolic link that points into the original repository, but this
is good enough to help people who use contrib/workdir/git-new-workdir
script.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodoc: technical details about the index file format
Junio C Hamano [Wed, 2 Mar 2011 01:51:01 +0000 (17:51 -0800)] 
doc: technical details about the index file format

 * Clarify "string of unsigned bytes";

 * Blob has two variants (regular file vs symlink), not (blob vs symlink);

 * Clarify permission mode bits;

 * Clarify ce_namelen() "too long to fit in the length field" case;

 * Clarify "." etc are forbidden as path components;

 * Match the description with the internal wording "cache-tree";

 * All types of extension begin with signature and length as explained in
   the first part. Don't repeat the "length" part in the description of
   each extension (can be mistaken as if there is a separate 32-bit size
   field inside the extension), but state what the signature for each
   extension is.

 * Don't say "Extension tag", as we have said "Extension signature" in the
   first part---be consistent;

 * Clarify the invalidation of cache-tree entries;

 * Correct description on subtree_nr field in the cache-tree;

 * Clarify the order of entries in cache-tree;

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'kc/gitweb-pathinfo-w-anchor'
Junio C Hamano [Wed, 23 Mar 2011 21:55:55 +0000 (14:55 -0700)] 
Merge branch 'kc/gitweb-pathinfo-w-anchor'

* kc/gitweb-pathinfo-w-anchor:
  gitweb: fix #patchNN anchors when path_info is enabled

13 years agoMerge branch 'jn/fortify-source-workaround'
Junio C Hamano [Wed, 23 Mar 2011 21:55:49 +0000 (14:55 -0700)] 
Merge branch 'jn/fortify-source-workaround'

* jn/fortify-source-workaround:
  run-command: prettify -D_FORTIFY_SOURCE workaround

13 years agoMerge branch 'jn/maint-c99-format'
Junio C Hamano [Wed, 23 Mar 2011 21:55:46 +0000 (14:55 -0700)] 
Merge branch 'jn/maint-c99-format'

* jn/maint-c99-format:
  unbreak and eliminate NO_C99_FORMAT
  mktag: avoid %td in format string

13 years agoMerge branch 'lt/default-abbrev'
Junio C Hamano [Wed, 23 Mar 2011 21:55:40 +0000 (14:55 -0700)] 
Merge branch 'lt/default-abbrev'

* lt/default-abbrev:
  Rename core.abbrevlength back to core.abbrev
  Make the default abbrev length configurable

13 years agoMerge branch 'pk/stash-apply-status-relative'
Junio C Hamano [Wed, 23 Mar 2011 21:55:37 +0000 (14:55 -0700)] 
Merge branch 'pk/stash-apply-status-relative'

* pk/stash-apply-status-relative:
  Add test: git stash shows status relative to current dir
  git stash: show status relative to current directory

13 years agoMerge branch 'jc/maint-diff-q-filter'
Junio C Hamano [Wed, 23 Mar 2011 21:55:17 +0000 (14:55 -0700)] 
Merge branch 'jc/maint-diff-q-filter'

* jc/maint-diff-q-filter:
  diff --quiet: disable optimization when --diff-filter=X is used

13 years agoMerge branch 'pw/p4'
Junio C Hamano [Wed, 23 Mar 2011 21:54:24 +0000 (14:54 -0700)] 
Merge branch 'pw/p4'

* pw/p4:
  git-p4: test sync new branch
  git-p4: fix sync new branch regression

13 years agorev-list --min-parents,--max-parents: doc, test and completion
Michael J Gruber [Wed, 23 Mar 2011 09:38:51 +0000 (10:38 +0100)] 
rev-list --min-parents,--max-parents: doc, test and completion

This also adds test for "--merges" and "--no-merges" which we did not
have so far.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorevision.c: introduce --min-parents and --max-parents options
Michael J Gruber [Mon, 21 Mar 2011 10:14:06 +0000 (11:14 +0100)] 
revision.c: introduce --min-parents and --max-parents options

Introduce --min-parents and --max-parents options which limit the
revisions to those commits which have at least (or at most) that many
commits, where negative arguments for --max-parents= denote infinity
(i.e. no upper limit).

In particular:

  --max-parents=1 is the same as --no-merges;
  --min-parents=2 is the same as --merges;
  --max-parents=0 shows only roots; and
  --min-parents=3 shows only octopus merges

Using --min-parents=n and --max-parents=m with n>m gives you what you ask
for (i.e. nothing) for obvious reasons, just like when you give --merges
(show only merge commits) and --no-merges (show only non-merge commits) at
the same time.

Also, introduce --no-min-parents and --no-max-parents to do the obvious
thing for convenience.

We compute the number of parents only when we limit by that, so there
is no performance impact when there are no limiters.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoUpdate draft release notes to 1.7.5
Junio C Hamano [Wed, 23 Mar 2011 05:02:24 +0000 (22:02 -0700)] 
Update draft release notes to 1.7.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'mg/rev-list-one-side-only'
Junio C Hamano [Wed, 23 Mar 2011 04:38:50 +0000 (21:38 -0700)] 
Merge branch 'mg/rev-list-one-side-only'

* mg/rev-list-one-side-only:
  git-log: put space after commit mark
  t6007: test rev-list --cherry
  log --cherry: a synonym
  rev-list: documentation and test for --cherry-mark
  revision.c: introduce --cherry-mark
  rev-list/log: factor out revision mark generation
  rev-list: --left/right-only are mutually exclusive
  rev-list: documentation and test for --left/right-only
  t6007: Make sure we test --cherry-pick
  revlist.c: introduce --left/right-only for unsymmetric picking

13 years agoMerge branch 'js/maint-stash-index-copy'
Junio C Hamano [Wed, 23 Mar 2011 04:38:25 +0000 (21:38 -0700)] 
Merge branch 'js/maint-stash-index-copy'

* js/maint-stash-index-copy:
  stash: copy the index using --index-output instead of cp -p
  stash: fix incorrect quoting in cleanup of temporary files

13 years agoMerge branch 'tl/p4'
Junio C Hamano [Wed, 23 Mar 2011 04:38:19 +0000 (21:38 -0700)] 
Merge branch 'tl/p4'

* tl/p4:
  git-p4: Fix error message crash in P4Sync.commit.
  Teach git-p4 to ignore case in perforce filenames if configured.
  git-p4: Teach gitConfig method about arguments.

13 years agoMerge branch 'mg/doc-bisect-tweak-worktree'
Junio C Hamano [Wed, 23 Mar 2011 04:38:15 +0000 (21:38 -0700)] 
Merge branch 'mg/doc-bisect-tweak-worktree'

* mg/doc-bisect-tweak-worktree:
  git-bisect.txt: example for bisecting with hot-fix
  git-bisect.txt: streamline run presentation

13 years agoMerge branch 'jn/test-sanitize-git-env'
Junio C Hamano [Wed, 23 Mar 2011 04:38:12 +0000 (21:38 -0700)] 
Merge branch 'jn/test-sanitize-git-env'

* jn/test-sanitize-git-env:
  tests: scrub environment of GIT_* variables
  config: drop support for GIT_CONFIG_NOGLOBAL
  gitattributes: drop support for GIT_ATTR_NOGLOBAL
  tests: suppress system gitattributes
  tests: stop worrying about obsolete environment variables

13 years agoMerge branch 'sp/maint-upload-pack-stop-early'
Junio C Hamano [Wed, 23 Mar 2011 04:38:06 +0000 (21:38 -0700)] 
Merge branch 'sp/maint-upload-pack-stop-early'

* sp/maint-upload-pack-stop-early:
  upload-pack: Implement no-done capability
  upload-pack: More aggressively send 'ACK %s ready'

13 years agoMerge branch 'sp/maint-fetch-pack-stop-early'
Junio C Hamano [Wed, 23 Mar 2011 04:38:03 +0000 (21:38 -0700)] 
Merge branch 'sp/maint-fetch-pack-stop-early'

* sp/maint-fetch-pack-stop-early:
  fetch-pack: Implement no-done capability
  fetch-pack: Finish negotation if remote replies "ACK %s ready"

13 years agoMerge branch 'jc/maint-rev-list-culled-boundary'
Junio C Hamano [Wed, 23 Mar 2011 04:37:59 +0000 (21:37 -0700)] 
Merge branch 'jc/maint-rev-list-culled-boundary'

* jc/maint-rev-list-culled-boundary:
  list-objects.c: don't add an unparsed NULL as a pending tree

Conflicts:
list-objects.c

13 years agoMerge branch 'jc/maint-fetch-alt'
Junio C Hamano [Wed, 23 Mar 2011 04:37:53 +0000 (21:37 -0700)] 
Merge branch 'jc/maint-fetch-alt'

* jc/maint-fetch-alt:
  fetch-pack: objects in our alternates are available to us
  refs_from_alternate: helper to use refs from alternates

Conflicts:
builtin/receive-pack.c

13 years agoMerge branch 'sg/complete-symmetric-diff'
Junio C Hamano [Wed, 23 Mar 2011 04:37:47 +0000 (21:37 -0700)] 
Merge branch 'sg/complete-symmetric-diff'

* sg/complete-symmetric-diff:
  bash: complete 'git diff ...branc<TAB>'
  bash: fix misindented esac statement in __git_complete_file()

13 years agoMerge branch 'svn-fe' of git://repo.or.cz/git/jrn
Junio C Hamano [Wed, 23 Mar 2011 03:51:07 +0000 (20:51 -0700)] 
Merge branch 'svn-fe' of git://repo.or.cz/git/jrn

* 'svn-fe' of git://repo.or.cz/git/jrn:
  vcs-svn: use strchr to find RFC822 delimiter
  vcs-svn: implement perfect hash for top-level keys
  vcs-svn: implement perfect hash for node-prop keys
  vcs-svn: use strbuf for author, UUID, and URL
  vcs-svn: use strbuf for revision log
  vcs-svn: improve reporting of input errors
  vcs-svn: make buffer_copy_bytes return length read
  vcs-svn: make buffer_skip_bytes return length read
  vcs-svn: improve support for reading large files
  vcs-svn: allow input errors to be detected promptly
  vcs-svn: simplify repo_modify_path and repo_copy
  vcs-svn: handle_node: use repo_read_path
  vcs-svn: introduce repo_read_path to check the content at a path

13 years agoMerge branch 'db/length-as-hash' into svn-fe
Jonathan Nieder [Tue, 22 Mar 2011 23:44:49 +0000 (18:44 -0500)] 
Merge branch 'db/length-as-hash' into svn-fe

* db/length-as-hash:
  vcs-svn: use strchr to find RFC822 delimiter
  vcs-svn: implement perfect hash for top-level keys
  vcs-svn: implement perfect hash for node-prop keys

Conflicts:
vcs-svn/svndump.c

13 years agovcs-svn: use strchr to find RFC822 delimiter
David Barr [Tue, 14 Dec 2010 00:06:43 +0000 (11:06 +1100)] 
vcs-svn: use strchr to find RFC822 delimiter

This is a small optimisation (4% reduction in user time) but is the
largest artifact within the parsing portion of svndump.c

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: implement perfect hash for top-level keys
David Barr [Mon, 13 Dec 2010 08:56:01 +0000 (19:56 +1100)] 
vcs-svn: implement perfect hash for top-level keys

Instead of interning property names and comparing their string_pool
keys, look them up in a table by string length, which should be about
as fast.

Another small step towards removing dependence on string_pool
altogether.

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: implement perfect hash for node-prop keys
David Barr [Mon, 13 Dec 2010 08:13:24 +0000 (19:13 +1100)] 
vcs-svn: implement perfect hash for node-prop keys

Instead of interning property names and comparing their string_pool
keys, look them up in a table by string length, which should be about
as fast.

This is a small step towards removing dependence on string_pool.

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: use strbuf for author, UUID, and URL
David Barr [Tue, 22 Mar 2011 22:52:17 +0000 (17:52 -0500)] 
vcs-svn: use strbuf for author, UUID, and URL

Use strbufs and strings instead of interned strings for values of rev,
dump, and node fields that happen to be strings.  After this change,
the only remaining string_pool use is for paths in the repo_tree API
and internals.

Functional change: treat an empty author, UUID, or URL as none at all.
So for example, in repos where the first revision has an empty
svn:author property, the first rev will be treated as by "nobody"
rather than by a person with empty name and email address created by
prepending an @ sign to the repository UUID.

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Tue, 22 Mar 2011 21:56:13 +0000 (14:56 -0700)] 
Merge branch 'maint'

* maint:
  git-am.txt: advertise 'git am --abort' instead of 'rm .git/rebase-apply'
  bisect: visualize with git-log if gitk is unavailable

13 years agovcs-svn: use strbuf for revision log
David Barr [Mon, 21 Mar 2011 23:49:50 +0000 (10:49 +1100)] 
vcs-svn: use strbuf for revision log

obj_pool is overkill for this application: all that is needed is a
buffer that can resize from rev to rev to accomodate differently-sized
strings.  In the spirit of commit deadcef4 (2010-11-06), use a strbuf
instead.

This is a small step towards removing dependence on obj_pool.h.

Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: improve reporting of input errors
Jonathan Nieder [Tue, 28 Dec 2010 10:30:54 +0000 (04:30 -0600)] 
vcs-svn: improve reporting of input errors

Catch input errors and exit early enough to print a reasonable
diagnosis based on errno.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: make buffer_copy_bytes return length read
Jonathan Nieder [Tue, 28 Dec 2010 10:26:17 +0000 (04:26 -0600)] 
vcs-svn: make buffer_copy_bytes return length read

Currently buffer_copy_bytes does not report to its caller whether
it encountered an early end of file.

Add a return value representing the number of bytes read (but not
the number of bytes copied).  This way all three unusual conditions
can be distinguished: input error with buffer_ferror, output error
with ferror(outfile), early end of input by checking the return
value.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: make buffer_skip_bytes return length read
Jonathan Nieder [Mon, 11 Oct 2010 02:44:21 +0000 (21:44 -0500)] 
vcs-svn: make buffer_skip_bytes return length read

Currently there is no way to detect when input ended if it ended
early during buffer_skip_bytes.  Tell the calling program how many
bytes were actually skipped for easier debugging.

Existing callers will still ignore early EOF.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agovcs-svn: improve support for reading large files
Jonathan Nieder [Mon, 11 Oct 2010 02:46:24 +0000 (21:46 -0500)] 
vcs-svn: improve support for reading large files

Move from uint32_t to off_t as the fundamental unit of length used by
the line_buffer library.  Performance would get worse if anything but
I think it's worth it for support of deltas that need to skip large
pieces (> 4 GiB).

Exception: buffer_read_string still takes a uint32_t, since it keeps
its result in an in-core obj_pool.

Callers still have to be updated to take advantage of this.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agogit-am.txt: advertise 'git am --abort' instead of 'rm .git/rebase-apply'
SZEDER Gábor [Tue, 22 Mar 2011 18:42:25 +0000 (19:42 +0100)] 
git-am.txt: advertise 'git am --abort' instead of 'rm .git/rebase-apply'

'git am --abort' is around for quite a long time now, and users should
normally not poke around inside the .git directory, yet the
documentation of 'git am' still recommends the following:

  ... if you decide to start over from scratch,
  run `rm -f -r .git/rebase-apply` ...

Suggest 'git am --abort' instead.

It's not quite the same as the original, because 'git am --abort' will
restore the original branch, while simply removing '.git/rebase-apply'
won't, but that's rather a thinko in the original wording, because
that won't actually "start over _from scratch_".

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoRemove unused variables
Johannes Schindelin [Tue, 22 Mar 2011 12:50:08 +0000 (13:50 +0100)] 
Remove unused variables

Noticed by gcc 4.6.0.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoFix sparse warnings
Stephen Boyd [Tue, 22 Mar 2011 07:51:05 +0000 (00:51 -0700)] 
Fix sparse warnings

Fix warnings from 'make check'.

 - These files don't include 'builtin.h' causing sparse to complain that
   cmd_* isn't declared:

   builtin/clone.c:364, builtin/fetch-pack.c:797,
   builtin/fmt-merge-msg.c:34, builtin/hash-object.c:78,
   builtin/merge-index.c:69, builtin/merge-recursive.c:22
   builtin/merge-tree.c:341, builtin/mktag.c:156, builtin/notes.c:426
   builtin/notes.c:822, builtin/pack-redundant.c:596,
   builtin/pack-refs.c:10, builtin/patch-id.c:60, builtin/patch-id.c:149,
   builtin/remote.c:1512, builtin/remote-ext.c:240,
   builtin/remote-fd.c:53, builtin/reset.c:236, builtin/send-pack.c:384,
   builtin/unpack-file.c:25, builtin/var.c:75

 - These files have symbols which should be marked static since they're
   only file scope:

   submodule.c:12, diff.c:631, replace_object.c:92, submodule.c:13,
   submodule.c:14, trace.c:78, transport.c:195, transport-helper.c:79,
   unpack-trees.c:19, url.c:3, url.c:18, url.c:104, url.c:117, url.c:123,
   url.c:129, url.c:136, thread-utils.c:21, thread-utils.c:48

 - These files redeclare symbols to be different types:

   builtin/index-pack.c:210, parse-options.c:564, parse-options.c:571,
   usage.c:49, usage.c:58, usage.c:63, usage.c:72

 - These files use a literal integer 0 when they really should use a NULL
   pointer:

   daemon.c:663, fast-import.c:2942, imap-send.c:1072, notes-merge.c:362

While we're in the area, clean up some unused #includes in builtin files
(mostly exec_cmd.h).

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>