git/git.git
11 years agoFurther 'approxidate' improvements
Linus Torvalds [Sun, 23 Aug 2009 01:11:44 +0000 (18:11 -0700)]
Further 'approxidate' improvements

The previous patch to improve approxidate got us to the point that a lot
of the remaining annoyances were due to the 'strict' date handling running
first, and deciding that it got a good enough date that the approximate
date routines were never even invoked.

For example, using a date string like

6AM, June 7, 2009

the strict date logic would be perfectly happy with the "June 7, 2009"
part, and ignore the 6AM part that it didn't understand - resulting in the
information getting dropped on the floor:

6AM, June 7, 2009 -> Sat Jun 6 00:00:00 2009

and the date being calculated as if it was midnight, and the '6AM' having
confused the date routines into thinking about '6 June' rather than 'June
7' at 6AM (ie notice how the _day_ was wrong due to this, not just the
time).

So this makes the strict date routines a bit stricter, and requires that
not just the date, but also the time, has actually been parsed. With that
fix, and trivial extension of the approxidate routines, git now properly
parses the date as

6AM, June 7, 2009 -> Sun Jun  7 06:00:00 2009

without dropping the fuzzy time ("6AM" or "noon" or any of the other
non-strict time formats) on the floor.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoImprove on 'approxidate'
Linus Torvalds [Sat, 22 Aug 2009 22:10:07 +0000 (15:10 -0700)]
Improve on 'approxidate'

This is not a new failure mode - approxidate has always been kind of
random in the input it accepts, but some of the randomness is more
irritating than others.

For example:

Jun 6, 5AM -> Mon Jun 22 05:00:00 2009
5AM Jun 6 -> Sat Jun  6 05:00:00 2009

Whaa? The reason for the above is that approxidate squirrells away the '6'
from "Jun 6" to see if it's going to be a relative number, and then
forgets about it when it sees a new number (the '5' in '5AM'). So the odd
"June 22" date is because today is July 22nd, and if it doesn't have
another day of the month, it will just pick todays mday - having ignored
the '6' entirely due to getting all excited about seeing a new number (5).

There are other oddnesses. This does not fix them all, but I think it
makes for fewer _really_ perplexing cases. At least now we have

Jun 6, 5AM -> Sat Jun  6 05:00:00 2009
5AM, Jun 6 -> Sat Jun  6 05:00:00 2009

which makes me happier. I can still point to cases that don't work as
well, but those are separate issues.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSync with 1.6.4.1
Junio C Hamano [Sat, 22 Aug 2009 03:23:10 +0000 (20:23 -0700)]
Sync with 1.6.4.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGIT 1.6.4.1 v1.6.4.1
Junio C Hamano [Fri, 21 Aug 2009 19:02:25 +0000 (12:02 -0700)]
GIT 1.6.4.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'bc/maint-am-email' into maint
Junio C Hamano [Sat, 22 Aug 2009 01:51:30 +0000 (18:51 -0700)]
Merge branch 'bc/maint-am-email' into maint

* bc/maint-am-email:
  git-am: print fair error message when format detection fails
  am: allow individual e-mail files as input

11 years agocompat/snprintf.c: clarify SNPRINTF_SIZE_CORR
Junio C Hamano [Fri, 21 Aug 2009 22:13:21 +0000 (15:13 -0700)]
compat/snprintf.c: clarify SNPRINTF_SIZE_CORR

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'cc/replace'
Junio C Hamano [Sat, 22 Aug 2009 01:47:53 +0000 (18:47 -0700)]
Merge branch 'cc/replace'

* cc/replace:
  t6050: check pushing something based on a replaced commit
  Documentation: add documentation for "git replace"
  Add git-replace to .gitignore
  builtin-replace: use "usage_msg_opt" to give better error messages
  parse-options: add new function "usage_msg_opt"
  builtin-replace: teach "git replace" to actually replace
  Add new "git replace" command
  environment: add global variable to disable replacement
  mktag: call "check_sha1_signature" with the replacement sha1
  replace_object: add a test case
  object: call "check_sha1_signature" with the replacement sha1
  sha1_file: add a "read_sha1_file_repl" function
  replace_object: add mechanism to replace objects found in "refs/replace/"
  refs: add a "for_each_replace_ref" function

11 years agoMerge branch 'gb/apply-ignore-whitespace'
Junio C Hamano [Sat, 22 Aug 2009 01:47:48 +0000 (18:47 -0700)]
Merge branch 'gb/apply-ignore-whitespace'

* gb/apply-ignore-whitespace:
  git apply: option to ignore whitespace differences

11 years agoMerge branch 'bc/mailsplit-cr-at-eol'
Junio C Hamano [Sat, 22 Aug 2009 01:47:44 +0000 (18:47 -0700)]
Merge branch 'bc/mailsplit-cr-at-eol'

* bc/mailsplit-cr-at-eol:
  Allow mailsplit (and hence git-am) to handle mails with CRLF line-endings
  builtin-mailsplit.c: remove read_line_with_nul() since it is no longer used
  builtin-mailinfo,builtin-mailsplit: use strbufs
  strbuf: add new function strbuf_getwholeline()

11 years agoMerge branch 'jc/maint-merge-recursive-fix' into maint
Junio C Hamano [Fri, 21 Aug 2009 18:34:24 +0000 (11:34 -0700)]
Merge branch 'jc/maint-merge-recursive-fix' into maint

* jc/maint-merge-recursive-fix:
  merge-recursive: don't segfault while handling rename clashes

11 years agoMerge branch 'zf/maint-gitweb-acname' into maint
Junio C Hamano [Fri, 21 Aug 2009 18:34:17 +0000 (11:34 -0700)]
Merge branch 'zf/maint-gitweb-acname' into maint

* zf/maint-gitweb-acname:
  gitweb: parse_commit_text encoding fix

11 years agoMerge branch 'np/maint-limit-delta-cache' into maint
Junio C Hamano [Fri, 21 Aug 2009 18:34:02 +0000 (11:34 -0700)]
Merge branch 'np/maint-limit-delta-cache' into maint

* np/maint-limit-delta-cache:
  don't let the delta cache grow unbounded in 'git repack'

11 years agoMerge branch 'jk/maint-show-tag' into maint
Junio C Hamano [Fri, 21 Aug 2009 18:33:54 +0000 (11:33 -0700)]
Merge branch 'jk/maint-show-tag' into maint

* jk/maint-show-tag:
  show: add space between multiple items
  show: suppress extra newline when showing annotated tag

11 years agoMerge branch 'sb/maint-pull-rebase' into maint
Junio C Hamano [Fri, 21 Aug 2009 18:33:08 +0000 (11:33 -0700)]
Merge branch 'sb/maint-pull-rebase' into maint

* sb/maint-pull-rebase:
  pull: support rebased upstream + fetch + pull --rebase
  t5520-pull: Test for rebased upstream + fetch + pull --rebase

11 years agoMake test number t7406- unique
Johannes Sixt [Fri, 21 Aug 2009 08:32:25 +0000 (10:32 +0200)]
Make test number t7406- unique

We skip t7407 because a patch series is cooking that uses is.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-compat-util.h: remove superfluous test for __sun__
Brandon Casey [Thu, 20 Aug 2009 01:27:08 +0000 (20:27 -0500)]
git-compat-util.h: remove superfluous test for __sun__

This 'ifndef' macro is entered only when __sun__ is not defined.  This test
will never fail since it is located inside of the 'else' branch of an 'if'
macro which tests whether __sun__ is defined.  It has had no effect since
the merge at 436f66b7.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'rc/maint-http-fix'
Junio C Hamano [Wed, 19 Aug 2009 06:33:16 +0000 (23:33 -0700)]
Merge branch 'rc/maint-http-fix'

* rc/maint-http-fix:
  http.c: don't assume that urls don't end with slash

11 years agoMerge branch 'tr/maint-1.6.3-add-p-modeonly-fix'
Junio C Hamano [Wed, 19 Aug 2009 06:32:58 +0000 (23:32 -0700)]
Merge branch 'tr/maint-1.6.3-add-p-modeonly-fix'

* tr/maint-1.6.3-add-p-modeonly-fix:
  add -p: do not attempt to coalesce mode changes
  git add -p: demonstrate failure when staging both mode and hunk

11 years agograph API: use a new color when starting a brand new column
Adam Simpkins [Tue, 18 Aug 2009 21:41:12 +0000 (14:41 -0700)]
graph API: use a new color when starting a brand new column

Use a new color for commits that don't have any previously printed
children.  The following command demonstrates the changes:

  git log --graph --pretty=tformat:'%h %s%n' -7 481c7a6 18b0793

Now the two independent lines of development are displayed with
different colors, instead of both using the same color.

Signed-off-by: Adam Simpkins <simpkins@facebook.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-svn: Use GIT_SSH setting if SVN_SSH is not set
Karthik R [Tue, 18 Aug 2009 23:54:40 +0000 (18:54 -0500)]
git-svn: Use GIT_SSH setting if SVN_SSH is not set

If SVN_SSH is defined, it will be used. Else value in
GIT_SSH is copied to SVN_SSH & then, only on Windows,
the \s are escaped.

On Windows, the shell-variables must be set as follows
    GIT_SSH="C:\Program Files\PuTTY\plink.exe"
    SVN_SSH="C:\\Program Files\\PuTTY\\plink.exe"

See http://code.google.com/p/msysgit/issues/detail?id=305

[ew: fixed indentation to use tabs]

Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Karthik Rajagopalan <karthikr@fastmail.fm>
11 years agosvn: assume URLs from the command-line are URI-encoded
Eric Wong [Sun, 16 Aug 2009 21:22:12 +0000 (14:22 -0700)]
svn: assume URLs from the command-line are URI-encoded

And then unescape them when writing to $GIT_CONFIG.

SVN has different rules for repository URLs (usually the root)
and for paths within that repository (below the HTTP layer).
Thus, for the request URI path at the HTTP level, the URI needs
to be encoded.  However, in the body of the HTTP request (the
with underlying SVN XML protocol), those paths should not be
URI-encoded[1].  For non-HTTP(S) requests, SVN appears to be
more flexible and will except weird characters in the URL as
well as URI-encoded ones.

Since users are used to using URLs being entirely URI-encoded,
git svn will now attempt to unescape the path portion of URLs
while leaving the actual repository URL untouched.

This change will be reflected in newly-created $GIT_CONFIG files
only.  This allows users to switch between svn(+ssh)://, file://
and http(s):// urls without changing the fetch/branches/tags
config keys.  This won't affect existing imports at all (since
things didn't work before this commit anyways), and will allow
users to force escaping into repository paths that look like
they're escaped (but are not).

Thanks to Mike Smullin for the original bug report and Björn
Steinbrink for summarizing it into testable cases for me.

[1] Except when committing copies/renames, see
    commit 29633bb91c7bcff31ff3bb59378709e3e3ef627d

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agogit-svn.txt: Fix location of parent argument
Tuomas Suutari [Fri, 14 Aug 2009 08:11:58 +0000 (11:11 +0300)]
git-svn.txt: Fix location of parent argument

The note about interoperating in different timezones and such is about
localtime argument, not parent.

Signed-off-by: Tuomas Suutari <tuomas.suutari@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
11 years agoMerge branch 'maint'
Junio C Hamano [Tue, 18 Aug 2009 21:40:10 +0000 (14:40 -0700)]
Merge branch 'maint'

* maint:
  filter-branch: make the usage string fit on 80 chars terminals.
  filter-branch: add an example how to add ACKs to a range of commits
  docs: describe impact of repack on "clone -s"

11 years agohttp.c: don't assume that urls don't end with slash
Tay Ray Chuan [Mon, 17 Aug 2009 09:09:43 +0000 (17:09 +0800)]
http.c: don't assume that urls don't end with slash

Make append_remote_object_url() (and by implication,
get_remote_object_url) use end_url_with_slash() to ensure that the url
ends with a slash.

Previously, they assumed that the url did not end with a slash and
as a result appended a slash, sometimes errorneously.

This fixes an issue introduced in 5424bc5 ("http*: add helper methods
for fetching objects (loose)"), where the append_remote_object_url()
implementation in http-push.c, which assumed that urls end with a
slash, was replaced by another one in http.c, which assumed urls did
not end with a slash.

The above issue was raised by Thomas Schlichter:

  http://marc.info/?l=git&m=125043105231327

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Tested-by: Thomas Schlichter <thomas.schlichter@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agofilter-branch: make the usage string fit on 80 chars terminals.
Matthieu Moy [Tue, 18 Aug 2009 09:51:00 +0000 (11:51 +0200)]
filter-branch: make the usage string fit on 80 chars terminals.

It used to be a single, huge line, badly wrapped by xterm.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agofilter-branch: add an example how to add ACKs to a range of commits
Johannes Schindelin [Mon, 17 Aug 2009 20:38:46 +0000 (22:38 +0200)]
filter-branch: add an example how to add ACKs to a range of commits

When you have to add certain lines like ACKs (or for that matter,
Signed-off-by:s) to a range of commits starting with HEAD, you might
be tempted to use 'git rebase -i -10', but that is a waste of your
time.

It is better to use 'git filter-branch' with an appropriate message
filter, and this commit adds an example how to do so to
filter-branch's man page.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodocs: describe impact of repack on "clone -s"
Jeff King [Mon, 17 Aug 2009 06:19:17 +0000 (02:19 -0400)]
docs: describe impact of repack on "clone -s"

The effects of repacking on a repository with alternates are a bit
subtle. The two main things users will want are:

  1. Not to waste disk space by accidentally copying objects which could
     be shared.

  2. Copying all objects explicitly to break the dependency on the source
     repo.

This patch describes both under the "clone -s" documentation. It makes
sense to put it there rather than in git-repack.txt for both cases.

For (1), we are warning the user who is using "clone -s" about what _not_
to do, so we need to get their attention when reading about "clone -s".

For (2), we are telling them how git-repack can be used to accomplish a
task, but until they know that git-repack is the right tool, they have no
reason to look at the repack documentation.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'lt/block-sha1'
Junio C Hamano [Sun, 16 Aug 2009 11:14:32 +0000 (04:14 -0700)]
Merge branch 'lt/block-sha1'

* lt/block-sha1:
  block-sha1/sha1.c: silence compiler complaints by casting void * to char *
  block-sha1: more good unaligned memory access candidates
  block-sha1: support for architectures with memory alignment restrictions
  block-sha1: split the different "hacks" to be individually selected
  block-sha1: move code around
  block-sha1: improve code on large-register-set machines
  block-sha1: improved SHA1 hashing
  block-sha1: perform register rotation using cpp
  block-sha1: get rid of redundant 'lenW' context
  block-sha1: Use '(B&C)+(D&(B^C))' instead of '(B&C)|(D&(B|C))' in round 3
  block-sha1: macroize the rounds a bit further
  block-sha1: re-use the temporary array as we calculate the SHA1
  block-sha1: make the 'ntohl()' part of the first SHA1 loop
  block-sha1: minor fixups
  block-sha1: try to use rol/ror appropriately
  block-sha1: undo ctx->size change
  Add new optimized C 'block-sha1' routines

11 years agoMerge branch 'bc/maint-am-email'
Junio C Hamano [Sun, 16 Aug 2009 11:13:22 +0000 (04:13 -0700)]
Merge branch 'bc/maint-am-email'

* bc/maint-am-email:
  git-am: print fair error message when format detection fails
  am: allow individual e-mail files as input

11 years agoMerge branch 'js/maint-cover-letter-non-ascii'
Junio C Hamano [Sun, 16 Aug 2009 11:13:18 +0000 (04:13 -0700)]
Merge branch 'js/maint-cover-letter-non-ascii'

* js/maint-cover-letter-non-ascii:
  Correctly mark cover letters' encodings if they are not pure ASCII
  Expose the has_non_ascii() function

11 years agoMerge branch 'jc/maint-clean-nested-dir-safety'
Junio C Hamano [Sun, 16 Aug 2009 11:13:13 +0000 (04:13 -0700)]
Merge branch 'jc/maint-clean-nested-dir-safety'

* jc/maint-clean-nested-dir-safety:
  clean: require double -f options to nuke nested git repository and work tree

11 years agoMerge branch 'jk/maint-merge-msg-fix'
Junio C Hamano [Sun, 16 Aug 2009 11:13:04 +0000 (04:13 -0700)]
Merge branch 'jk/maint-merge-msg-fix'

* jk/maint-merge-msg-fix:
  merge: indicate remote tracking branches in merge message
  merge: fix incorrect merge message for ambiguous tag/branch
  add tests for merge message headings

11 years agoMerge git://git.kernel.org/pub/scm/gitk/gitk
Junio C Hamano [Sun, 16 Aug 2009 10:46:51 +0000 (03:46 -0700)]
Merge git://git.kernel.org/pub/scm/gitk/gitk

* git://git.kernel.org/pub/scm/gitk/gitk:
  gitk: Parse arbitrary commit-ish in SHA1 field
  gitk: Fix direction of symmetric difference in optimized mode
  gitk: New option to hide remote refs
  gitk: Do not hard-code "encoding" in attribute lookup functions

11 years agoadd -p: do not attempt to coalesce mode changes
Thomas Rast [Sat, 15 Aug 2009 13:56:39 +0000 (15:56 +0200)]
add -p: do not attempt to coalesce mode changes

In 0392513 (add-interactive: refactor mode hunk handling, 2009-04-16),
we merged the interaction loops for mode changes and hunk staging.
This was fine at the time, because 0beee4c (git-add--interactive:
remove hunk coalescing, 2008-07-02) removed hunk coalescing.

However, in 7a26e65 (Revert "git-add--interactive: remove hunk
coalescing", 2009-05-16), we resurrected it.  Since then, the code
would attempt in vain to merge mode changes with diff hunks,
corrupting both in the process.

We add a check to the coalescing loop to ensure it only looks at diff
hunks, thus skipping mode changes.

Noticed-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit add -p: demonstrate failure when staging both mode and hunk
Kirill Smelkov [Sat, 15 Aug 2009 12:26:49 +0000 (16:26 +0400)]
git add -p: demonstrate failure when staging both mode and hunk

When trying to stage changes to file which has also pending `chmod +x`,
`git add -p` produces lots of 'Use of uninitialized value ...' warnings
and fails to do the job:

    $ echo content >> file
    $ chmod +x file
    $ git add -p
    diff --git a/file b/file
    index e69de29..d95f3ad
    --- a/file
    +++ b/file
    old mode 100644
    new mode 100755
    Stage mode change [y,n,q,a,d,/,j,J,g,?]? y
    @@ -0,0 +1 @@
    +content
    Stage this hunk [y,n,q,a,d,/,K,g,e,?]? y
    Use of uninitialized value $o_ofs in addition (+) at .../git-add--interactive line 776.
    Use of uninitialized value $ofs in numeric le (<=) at .../git-add--interactive line 806.
    Use of uninitialized value $o0_ofs in concatenation (.) or string at .../git-add--interactive line 830.
    Use of uninitialized value $n0_ofs in concatenation (.) or string at .../git-add--interactive line 830.
    Use of uninitialized value $o_ofs in addition (+) at .../git-add--interactive line 776.
    fatal: corrupt patch at line 5
    diff --git a/file b/file
    index e69de29..d95f3ad
    --- a/file
    +++ b/file
    @@ -,0 + @@
    +content

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-cvsimport: add support for cvs pserver password scrambling.
Dirk Hoerner [Fri, 14 Aug 2009 06:58:31 +0000 (08:58 +0200)]
git-cvsimport: add support for cvs pserver password scrambling.

Instead of a cleartext password, the CVS pserver expects a scrambled one
in the authentication request. With this patch it is possible to import
CVS repositories only accessible via pserver and user/password.

Signed-off-by: Dirk Hoerner <dirker@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogitweb: Optimize git-favicon.png
Benjamin Kramer [Mon, 10 Aug 2009 12:09:00 +0000 (14:09 +0200)]
gitweb: Optimize git-favicon.png

Reduce size of git-favicon.png using a combination of optipng and
pngout. From 164 bytes to 115 bytes (30% reduction). Also reduce
git-logo.png's size by one byte using advcomp.

Signed-off-by: Benjamin Kramer <benny.kra@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblock-sha1/sha1.c: silence compiler complaints by casting void * to char *
Brandon Casey [Fri, 14 Aug 2009 22:52:15 +0000 (17:52 -0500)]
block-sha1/sha1.c: silence compiler complaints by casting void * to char *

Some compilers produce errors when arithmetic is attempted on pointers to
void.  We want computations done on byte addresses, so cast them to char *
to work them around.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jn/gitweb-blame' (early part)
Junio C Hamano [Fri, 14 Aug 2009 23:32:52 +0000 (16:32 -0700)]
Merge branch 'jn/gitweb-blame' (early part)

* 'jn/gitweb-blame' (early part):
  gitweb: Use light/dark for class names also in 'blame' view
  gitweb: Add author initials in 'blame' view, a la "git gui blame"
  gitweb: Mark commits with no "previous" in 'blame' view
  gitweb: Use "previous" header of git-blame -p in 'blame' view
  gitweb: Mark boundary commits in 'blame' view
  gitweb: Make .error style generic

11 years agoblock-sha1: more good unaligned memory access candidates
Nicolas Pitre [Thu, 13 Aug 2009 04:29:14 +0000 (00:29 -0400)]
block-sha1: more good unaligned memory access candidates

In addition to X86, PowerPC and S390 are capable of unaligned memory
accesses.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogitk: Parse arbitrary commit-ish in SHA1 field
Thomas Rast [Thu, 13 Aug 2009 07:25:03 +0000 (09:25 +0200)]
gitk: Parse arbitrary commit-ish in SHA1 field

We only accepted either SHA1s or heads/tags that have been read.  This
meant the user could not, e.g., enter HEAD to go back to the current
commit.

This adds code to call out to git rev-parse --verify if all other
methods of interpreting the string the user entered fail.
(git-rev-parse alone is not enough as we really want a single
revision.)

The error paths change slighly, because we now know from the rev-parse
invocation whether the expression was valid at all.  The previous
"unknown" path is now only triggered if the revision does exist, but
is not in the current view display.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agogitk: Fix direction of symmetric difference in optimized mode
Thomas Rast [Wed, 5 Aug 2009 21:15:36 +0000 (23:15 +0200)]
gitk: Fix direction of symmetric difference in optimized mode

ee66e08 (gitk: Make updates go faster, 2008-05-09) implemented an
optimized mode where gitk parses the arguments with rev-parse, and
manually reads history in chunks.  As mentioned in the commit message,
symmetric differences are a problem there:

    One wrinkle is that we have to turn symmetric diff arguments (of the
    form a...b) back into symmetric diff form so that --left-right still
    works, as git rev parse turns a...b into a b ^merge_base(a,b).

However, git-rev-parse returns a...b in the swapped order

    b a ^merge_base(a,b)

This has been the case since at least 1f8115b (the state of master at
the time of the abovementioned ee66e08; Merge branch 'maint',
2008-05-08).  So gitk flipped the sides of symmetric differences
whenever it was in optimized mode.

Fix this by swapping the sides of the reconstruction code.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agogitk: New option to hide remote refs
Thomas Rast [Mon, 3 Aug 2009 21:53:36 +0000 (23:53 +0200)]
gitk: New option to hide remote refs

In repositories with lots of remotes, looking at the history in gitk
can be borderline insane with all the red labels for remote refs.
Introduce a new option in the preferences that makes gitk ignore
remote refs entirely, so they don't take up space in the display.

Wished-for-by: Thell Fowler <tbfowler4@gmail.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agogitk: Do not hard-code "encoding" in attribute lookup functions
Johannes Sixt [Tue, 21 Jul 2009 08:09:48 +0000 (10:09 +0200)]
gitk: Do not hard-code "encoding" in attribute lookup functions

Commit 39ee47e (Clean up file encoding code and add enable/disable option,
2008-10-15) rewrote the attribute lookup functions gitattr and
cache_gitattr, but in the process hard-coded the attribute name "encoding"
instead of using the functions' parameters. This fixes it.

This is not a serious regression because currently all callers look only
for "encoding".

Further note that this fix assumes that future callers will not pass an
attribute name that contains regex special characters.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agosvn: (cleanup) use predefined constant for rev_map_fmt
Eric Wong [Thu, 13 Aug 2009 05:20:02 +0000 (22:20 -0700)]
svn: (cleanup) use predefined constant for rev_map_fmt

This makes life easier in case we ever need to change the
internal format of the rev_maps.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agosvn: allow branches outside of refs/remotes
Adam Brewster [Wed, 12 Aug 2009 03:14:27 +0000 (23:14 -0400)]
svn: allow branches outside of refs/remotes

It may be convenient for some users to store svn remote tracking
branches outside of the refs/remotes/ heirarchy.

To accomplish this feat, this patch includes the entire path to
the ref in $r->{'refname'} in &read_all_remotes and tries to change
references to this entry so the new value makes sense.

[ew: fixed backwards compatibility, long lines]

Signed-off-by: Adam Brewster <adambrewster@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agosvn: initial "master" points to trunk if possible
Eric Wong [Wed, 12 Aug 2009 23:01:59 +0000 (16:01 -0700)]
svn: initial "master" points to trunk if possible

Since "trunk" is a convention for the main development branch in
the SVN world, try to make that the master branch upon initial
checkout if it exists.  This is probably less surprising based
on user requests.

t9135 was the only test which relied on the previous behavior
and thus needed to be modified.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoMerge branch 'maint'
Junio C Hamano [Wed, 12 Aug 2009 23:36:04 +0000 (16:36 -0700)]
Merge branch 'maint'

* maint:
  push: point to 'git pull' and 'git push --force' in case of non-fast forward
  Documentation: add: <filepattern>... is optional
  Change mentions of "git programs" to "git commands"
  Documentation: merge: one <remote> is required
  help.c: give correct structure's size to memset()

11 years agoMerge branch 'maint-1.6.3' into maint
Junio C Hamano [Wed, 12 Aug 2009 23:15:55 +0000 (16:15 -0700)]
Merge branch 'maint-1.6.3' into maint

* maint-1.6.3:
  Change mentions of "git programs" to "git commands"
  Documentation: merge: one <remote> is required
  help.c: give correct structure's size to memset()

11 years agopush: point to 'git pull' and 'git push --force' in case of non-fast forward
Matthieu Moy [Sat, 8 Aug 2009 07:51:08 +0000 (09:51 +0200)]
push: point to 'git pull' and 'git push --force' in case of non-fast forward

'git push' failing because of non-fast forward is a very common situation,
and a beginner does not necessarily understand "fast forward" immediately.

Add a new section to the git-push documentation and refer them to it.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation: add: <filepattern>... is optional
Paul Bolle [Tue, 11 Aug 2009 13:03:10 +0000 (15:03 +0200)]
Documentation: add: <filepattern>... is optional

<filepattern>... is optional (e.g. when the --all or --update
options are used) so use square brackets in the synopsis.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoChange mentions of "git programs" to "git commands"
Ori Avtalion [Fri, 7 Aug 2009 14:24:21 +0000 (17:24 +0300)]
Change mentions of "git programs" to "git commands"

Most of the docs and printouts refer to "commands" when discussing what
the end users call via the "git" top-level program. We should refer them
as "git programs" when we discuss the fact that the commands are
implemented as separate programs, but in other contexts, it is better to
use the term "git commands" consistently.

Signed-off-by: Ori Avtalion <ori@avtalion.name>
Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation: merge: one <remote> is required
Paul Bolle [Tue, 11 Aug 2009 13:03:58 +0000 (15:03 +0200)]
Documentation: merge: one <remote> is required

merge only requires one <remote>, so "<remote>..." should be used in the
synopsis (and not "<remote> <remote>...").

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agohelp.c: give correct structure's size to memset()
Johan Herland [Tue, 11 Aug 2009 10:10:21 +0000 (12:10 +0200)]
help.c: give correct structure's size to memset()

These two structures are of the same type, but we'd better be consistent.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoallow pull --rebase on branch yet to be born
Jeff King [Wed, 12 Aug 2009 03:27:40 +0000 (23:27 -0400)]
allow pull --rebase on branch yet to be born

When doing a "pull --rebase", we check to make sure that the index and
working tree are clean. The index-clean check compares the index against
HEAD. The test erroneously reports dirtiness if we don't have a HEAD yet.

In such an "unborn branch" case, by definition, a non-empty index won't
be based on whatever we are pulling down from the remote, and will lose
the local change.  Just check if $GIT_DIR/index exists and error out.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblock-sha1: support for architectures with memory alignment restrictions
Nicolas Pitre [Wed, 12 Aug 2009 19:47:55 +0000 (15:47 -0400)]
block-sha1: support for architectures with memory alignment restrictions

This is needed on architectures with poor or non-existent unaligned memory
support and/or no fast byte swap instruction (such as ARM) by using byte
accesses to memory and shifting the result together.

This also makes the code portable, therefore the byte access methods are
the defaults.  Any architecture that properly supports unaligned word
accesses in hardware simply has to enable the alternative methods.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblock-sha1: split the different "hacks" to be individually selected
Nicolas Pitre [Wed, 12 Aug 2009 19:46:41 +0000 (15:46 -0400)]
block-sha1: split the different "hacks" to be individually selected

This is to make it easier for them to be selected individually depending
on the architecture instead of the other way around i.e. having each
architecture select a list of hacks up front.  That makes for clearer
documentation as well.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblock-sha1: move code around
Nicolas Pitre [Wed, 12 Aug 2009 19:45:48 +0000 (15:45 -0400)]
block-sha1: move code around

Move the code around so specific architecture hacks are defined first.
Also make one line comments actually one line.  No code change.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'maint'
Junio C Hamano [Tue, 11 Aug 2009 05:23:59 +0000 (22:23 -0700)]
Merge branch 'maint'

* maint:
  Fix typos in git-remote.txt and git-symbolic-ref.txt
  git-instaweb: fix mod_perl detection for apache2

11 years agoMerge branch 'maint-1.6.3' into maint
Junio C Hamano [Tue, 11 Aug 2009 05:23:48 +0000 (22:23 -0700)]
Merge branch 'maint-1.6.3' into maint

* maint-1.6.3:
  Fix typos in git-remote.txt and git-symbolic-ref.txt

11 years agoMerge branch 'jk/push-quiet'
Junio C Hamano [Tue, 11 Aug 2009 05:18:21 +0000 (22:18 -0700)]
Merge branch 'jk/push-quiet'

* jk/push-quiet:
  transport: don't show push status if --quiet is given
  transport: pass "quiet" flag to pack-objects
  push: add --quiet flag

11 years agoMerge branch 'jc/maint-merge-recursive-fix'
Junio C Hamano [Tue, 11 Aug 2009 05:17:01 +0000 (22:17 -0700)]
Merge branch 'jc/maint-merge-recursive-fix'

* jc/maint-merge-recursive-fix:
  merge-recursive: don't segfault while handling rename clashes

11 years agoMerge branch 'zf/maint-gitweb-acname'
Junio C Hamano [Tue, 11 Aug 2009 05:16:47 +0000 (22:16 -0700)]
Merge branch 'zf/maint-gitweb-acname'

* zf/maint-gitweb-acname:
  gitweb: parse_commit_text encoding fix

11 years agoMerge branch 'ns/am-raw-email'
Junio C Hamano [Tue, 11 Aug 2009 05:16:42 +0000 (22:16 -0700)]
Merge branch 'ns/am-raw-email'

* ns/am-raw-email:
  git-am: print fair error message when format detection fails
  am: allow individual e-mail files as input

11 years agoMerge branch 'np/maint-limit-delta-cache'
Junio C Hamano [Tue, 11 Aug 2009 05:16:09 +0000 (22:16 -0700)]
Merge branch 'np/maint-limit-delta-cache'

* np/maint-limit-delta-cache:
  don't let the delta cache grow unbounded in 'git repack'

11 years agoMerge branch 'jp/symlink-dirs'
Junio C Hamano [Tue, 11 Aug 2009 05:15:41 +0000 (22:15 -0700)]
Merge branch 'jp/symlink-dirs'

* jp/symlink-dirs:
  t6035-merge-dir-to-symlink depends on SYMLINKS prerequisite
  git-checkout: be careful about untracked symlinks
  lstat_cache: guard against full match of length of 'name' parameter
  Demonstrate bugs when a directory is replaced with a symlink

11 years agoMerge branch 'mk/grep-max-depth'
Junio C Hamano [Tue, 11 Aug 2009 05:15:12 +0000 (22:15 -0700)]
Merge branch 'mk/grep-max-depth'

* mk/grep-max-depth:
  grep: Add --max-depth option.

11 years agoMerge branch 'js/run-command-updates'
Junio C Hamano [Tue, 11 Aug 2009 05:14:57 +0000 (22:14 -0700)]
Merge branch 'js/run-command-updates'

* js/run-command-updates:
  api-run-command.txt: describe error behavior of run_command functions
  run-command.c: squelch a "use before assignment" warning
  receive-pack: remove unnecessary run_status report
  run_command: report failure to execute the program, but optionally don't
  run_command: encode deadly signal number in the return value
  run_command: report system call errors instead of returning error codes
  run_command: return exit code as positive value
  MinGW: simplify waitpid() emulation macros

11 years agoFix typos in git-remote.txt and git-symbolic-ref.txt
Štěpán Němec [Tue, 11 Aug 2009 00:52:07 +0000 (02:52 +0200)]
Fix typos in git-remote.txt and git-symbolic-ref.txt

Signed-off-by: Štěpán Němec <stepnem@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblock-sha1: improve code on large-register-set machines
Linus Torvalds [Mon, 10 Aug 2009 23:52:07 +0000 (16:52 -0700)]
block-sha1: improve code on large-register-set machines

For x86 performance (especially in 32-bit mode) I added that hack to write
the SHA1 internal temporary hash using a volatile pointer, in order to get
gcc to not try to cache the array contents. Because gcc will do all the
wrong things, and then spill things in insane random ways.

But on architectures like PPC, where you have 32 registers, it's actually
perfectly reasonable to put the whole temporary array[] into the register
set, and gcc can do so.

So make the 'volatile unsigned int *' cast be dependent on a
SMALL_REGISTER_SET preprocessor symbol, and enable it (currently) on just
x86 and x86-64.  With that, the routine is fairly reasonable even when
compared to the hand-scheduled PPC version. Ben Herrenschmidt reports on
a G5:

 * Paulus asm version:       about 3.67s
 * Yours with no change:     about 5.74s
 * Yours without "volatile": about 3.78s

so with this the C version is within about 3% of the asm one.

And add a lot of commentary on what the heck is going on.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-am: print fair error message when format detection fails
Nicolas Sebrecht [Fri, 7 Aug 2009 01:08:13 +0000 (20:08 -0500)]
git-am: print fair error message when format detection fails

Avoid git ending with this message:
"Patch format  is not supported."

With improved error message in the format detection failure case by
Giuseppe Bilotta.

Signed-off-by: Nicolas Sebrecht <ni.s@laposte.net>
Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoam: allow individual e-mail files as input
Junio C Hamano [Fri, 7 Aug 2009 01:08:12 +0000 (20:08 -0500)]
am: allow individual e-mail files as input

We traditionally allowed a mbox file or a directory name of a maildir (but
never an individual file inside a maildir) to be given to "git am".  Even
though an individual file in a maildir (or more generally, a piece of
RFC2822 e-mail) is not a mbox file, it contains enough information to
create a commit out of it, so there is no reason to reject one.  Running
mailsplit on such a file feels stupid, but it does not hurt.

This builds on top of a5a6755 (git-am foreign patch support: introduce
patch_format, 2009-05-27) that introduced mailbox format detection.  The
codepath to deal with a mbox requires it to begin with "From " line and
also allows it to begin with "From: ", but a random piece of e-mail can
and often do begin with any valid RFC2822 header lines.

Instead of checking the first line, we extract all the lines up to the
first empty line, and make sure they look like e-mail headers.

A test is added to t4150 to demonstrate this feature.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoCorrectly mark cover letters' encodings if they are not pure ASCII
Johannes Schindelin [Mon, 10 Aug 2009 16:22:22 +0000 (18:22 +0200)]
Correctly mark cover letters' encodings if they are not pure ASCII

If your name is, say, Üwë, you want your cover letters to appear
correctly.  Convince format-patch to mark it as 8-bit.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoExpose the has_non_ascii() function
Johannes Schindelin [Mon, 10 Aug 2009 16:22:18 +0000 (18:22 +0200)]
Expose the has_non_ascii() function

This function is useful outside of log-tree.c, too.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoCheck return value of ftruncate call in http.c
Jeff Lasslett [Mon, 10 Aug 2009 16:05:06 +0000 (00:05 +0800)]
Check return value of ftruncate call in http.c

In new_http_object_request(), check ftruncate() call return value and
handle possible errors.

Signed-off-by: Jeff Lasslett <jeff.lasslett@gmail.com>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agohttp.c: replace usage of temporary variable for urls
Tay Ray Chuan [Mon, 10 Aug 2009 15:59:55 +0000 (23:59 +0800)]
http.c: replace usage of temporary variable for urls

Use preq->url in new_http_pack_request and freq->url in
new_http_object_request when calling curl_setopt(CURLOPT_URL), instead
of using an intermediate variable, 'url'.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agohttp.c: free preq when aborting
Tay Ray Chuan [Mon, 10 Aug 2009 15:55:48 +0000 (23:55 +0800)]
http.c: free preq when aborting

Free preq in new_http_pack_request when aborting. preq was allocated
before jumping to the 'abort' label so this is safe.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'master' of git://git.bogomips.org/git-svn
Junio C Hamano [Mon, 10 Aug 2009 20:22:33 +0000 (13:22 -0700)]
Merge branch 'master' of git://git.bogomips.org/git-svn

* 'master' of git://git.bogomips.org/git-svn:
  git-svn: ignore leading blank lines in svn:ignore
  svn: Honor --prefix option in init without --stdlayout
  svn: Add && to t9107-git-svn-migrate.sh

11 years agogit-svn: ignore leading blank lines in svn:ignore
Michael Haggerty [Fri, 7 Aug 2009 19:21:21 +0000 (21:21 +0200)]
git-svn: ignore leading blank lines in svn:ignore

Subversion ignores all blank lines in svn:ignore properties.  The old
git-svn code ignored blank lines everywhere except for the first line
of the svn:ignore property.  This patch makes the "git svn
show-ignore" and "git svn create-ignore" commands ignore leading blank
lines, too.

Also include leading blank lines in the test suite.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
11 years agosvn: Honor --prefix option in init without --stdlayout
Adam Brewster [Tue, 4 Aug 2009 01:40:38 +0000 (21:40 -0400)]
svn: Honor --prefix option in init without --stdlayout

Most users who type

  git svn init file:///tmp/repo --prefix=my-svn/

would expect the root of the svn repository to be tracked by
refs/remotes/my-svn/git-svn.

Acked-by: Eric Wong <normalperson@yhbt.net>
11 years agosvn: Add && to t9107-git-svn-migrate.sh
Adam Brewster [Tue, 4 Aug 2009 01:40:37 +0000 (21:40 -0400)]
svn: Add && to t9107-git-svn-migrate.sh

It was probably intended for the test to fail unless all of the
commands succeed.

[ew: fixed tests to actually work]

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agogit-instaweb: fix mod_perl detection for apache2
Mark A Rada [Sat, 8 Aug 2009 22:24:02 +0000 (18:24 -0400)]
git-instaweb: fix mod_perl detection for apache2

The script was looking for something that matched the '^our $gitbin'
regex, which no longer exists in gitweb.cgi.

Now it looks for 'MOD_PERL', which should be on the line that checks
to see if the script is running in a mod_perl environment.

Signed-off-by: Mark Rada <marada@uwaterloo.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocument 'stash clear' recovery via unreachable commits
Thomas Rast [Sun, 9 Aug 2009 00:47:36 +0000 (02:47 +0200)]
Document 'stash clear' recovery via unreachable commits

Add an example to the stash documentation that shows how to quickly
find candidate commits among the 'git fsck --unreachable' output.
Unless you have merges of branch names containing WIP, or edit your
merge messages to say WIP, there will be no false positives.

Snippet written by Björn "doener" Steinbrink and me after zepolen_
asked on IRC.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge: indicate remote tracking branches in merge message
Jeff King [Sun, 9 Aug 2009 10:02:51 +0000 (06:02 -0400)]
merge: indicate remote tracking branches in merge message

Previously when merging directly from a local tracking
branch like:

  git merge origin/master

The merge message said:

   Merge commit 'origin/master'

     * commit 'origin/master':
       ...

Instead, let's be more explicit about what we are merging:

   Merge remote branch 'origin/master'

     * origin/master:
       ...

We accomplish this by recognizing remote tracking branches
in git-merge when we build the simulated FETCH_HEAD output
that we feed to fmt-merge-msg.

In addition to a new test in t7608, we have to tweak the
expected output of t3409, which does such a merge.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge: fix incorrect merge message for ambiguous tag/branch
Jeff King [Sun, 9 Aug 2009 10:02:24 +0000 (06:02 -0400)]
merge: fix incorrect merge message for ambiguous tag/branch

If we have both a tag and a branch named "foo", then calling
"git merge foo" will warn about the ambiguous ref, but merge
the tag.

When generating the commit message, though, we simply
checked whether "refs/heads/foo" existed, and if it did,
assumed it was a branch. This led to the statement "Merge
branch 'foo'" in the commit message, which is quite wrong.

Instead, we should use dwim_ref to find the actual ref used,
and describe it appropriately.

In addition to the test in t7608, we must also tweak the
expected output of t4202, which was accidentally triggering
this bug.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoadd tests for merge message headings
Jeff King [Sun, 9 Aug 2009 10:01:48 +0000 (06:01 -0400)]
add tests for merge message headings

When calling "git merge $X", we automatically generate a
commit message containing something like "Merge branch
'$X'". This test script checks that those messages say what
they should, and exposes a failure when merging a refname
that is ambiguous between a tag and a branch.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot/Makefile: include config.mak
Jeff King [Sun, 9 Aug 2009 08:50:37 +0000 (04:50 -0400)]
t/Makefile: include config.mak

This is useful if you want to specify GIT_TEST_OPTS that you
always use.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotests: allow user to specify trash directory location
Jeff King [Sun, 9 Aug 2009 08:39:45 +0000 (04:39 -0400)]
tests: allow user to specify trash directory location

The tests generate a large amount of I/O activity creating
and destroying repositories and files. We can improve the
time it takes to run the test suite by creating trash
directories on filesystems with better performance
characteristic, even though we may not want the rest of the
git repository on those filesystems (e.g., because they are
not network connected, or because they are temporary
ramdisks).

For example, on a dual processor system:

  $ cd t && time make -j32
  real    1m51.562s
  user    0m59.260s
  sys     1m20.933s

  # /dev/shm is tmpfs
  $ cd t && time make -j32 GIT_TEST_OPTS="--root=/dev/shm"
  real    1m1.484s
  user    0m53.555s
  sys     1m5.264s

We almost halve the wall clock time, and we utilize the
dual processors much better.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotests: provide $TRASH_DIRECTORY variable
Jeff King [Sun, 9 Aug 2009 08:38:11 +0000 (04:38 -0400)]
tests: provide $TRASH_DIRECTORY variable

Most scripts don't care about the absolute path to the trash
directory. The one exception was t4014 script, which pieced
together $TEST_DIRECTORY and $test itself to get an absolute
directory.

Instead, let's provide a $TRASH_DIRECTORY which specifies
the same thing. This keeps the $test variable internal to
test-lib.sh and paves the way for trash directories in other
locations.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotests: use "$TEST_DIRECTORY" instead of ".."
Jeff King [Sun, 9 Aug 2009 08:37:52 +0000 (04:37 -0400)]
tests: use "$TEST_DIRECTORY" instead of ".."

The $TEST_DIRECTORY variable allows tests to find the
top-level test directory regardless of the current working
directory.

In the past, this has been used to accomodate tests which
change directories, but it is also the first step to being
able to move trash directories outside of the
$TEST_DIRECTORY hierarchy.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot0001-init: split the existence test from the permission test
Johannes Sixt [Sun, 9 Aug 2009 16:02:55 +0000 (18:02 +0200)]
t0001-init: split the existence test from the permission test

The test for correct permissions after init created a deep directory
must be guarded by POSIXPERM. But testing that the deep dirctory exists
is good even on platforms that do not provide the POSIXPERM prerequiste.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot0001-init: fix a file name
Johannes Sixt [Sun, 9 Aug 2009 15:38:04 +0000 (17:38 +0200)]
t0001-init: fix a file name

Without this change, grep fails because it does not find the file
instead of because it does not find the text in the file.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot6035-merge-dir-to-symlink depends on SYMLINKS prerequisite
Johannes Sixt [Sun, 9 Aug 2009 15:35:02 +0000 (17:35 +0200)]
t6035-merge-dir-to-symlink depends on SYMLINKS prerequisite

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoapi-run-command.txt: describe error behavior of run_command functions
Johannes Sixt [Sat, 8 Aug 2009 20:44:20 +0000 (22:44 +0200)]
api-run-command.txt: describe error behavior of run_command functions

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'maint'
Junio C Hamano [Sat, 8 Aug 2009 05:35:17 +0000 (22:35 -0700)]
Merge branch 'maint'

* maint:
  verify-pack -v: do not report "chain length 0"
  t5510: harden the way verify-pack is used

11 years agoblock-sha1: improved SHA1 hashing
Linus Torvalds [Sat, 8 Aug 2009 04:16:46 +0000 (21:16 -0700)]
block-sha1: improved SHA1 hashing

I think I have found a way to avoid the gcc crazyness.

Lookie here:

#             TIME[s] SPEED[MB/s]
rfc3174         5.094       119.8
rfc3174         5.098       119.7
linus           1.462       417.5
linusas         2.008         304
linusas2        1.878         325
mozilla         5.566       109.6
mozillaas       5.866       104.1
openssl         1.609       379.3
spelvin         1.675       364.5
spelvina        1.601       381.3
nettle          1.591       383.6

notice? I outperform all the hand-tuned asm on 32-bit too. By quite a
margin, in fact.

Now, I didn't try a P4, and it's possible that it won't do that there, but
the 32-bit code generation sure looks impressive on my Nehalem box. The
magic? I force the stores to the 512-bit hash bucket to be done in order.
That seems to help a lot.

The diff is trivial (on top of the "rename registers with cpp" patch), as
appended. And it does seem to fix the P4 issues too, although I can
obviously (once again) only test Prescott, and only in 64-bit mode:

#             TIME[s] SPEED[MB/s]
rfc3174         1.662       36.73
rfc3174          1.64       37.22
linus          0.2523       241.9
linusas        0.4367       139.8
linusas2       0.4487         136
mozilla        0.9704        62.9
mozillaas      0.9399       64.94

that's some really impressive improvement. All from just saying "do the
stores in the order I told you to, dammit!" to the compiler.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblock-sha1: perform register rotation using cpp
Linus Torvalds [Thu, 6 Aug 2009 19:41:00 +0000 (12:41 -0700)]
block-sha1: perform register rotation using cpp

Instead of letting the compiler to figure out the optimal way to rotate
register usage, explicitly rotate the register names with cpp.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'maint-1.6.3' into maint
Junio C Hamano [Sat, 8 Aug 2009 03:44:26 +0000 (20:44 -0700)]
Merge branch 'maint-1.6.3' into maint

* maint-1.6.3:
  verify-pack -v: do not report "chain length 0"
  t5510: harden the way verify-pack is used

11 years agoMerge branch 'maint-1.6.2' into maint-1.6.3
Junio C Hamano [Sat, 8 Aug 2009 03:44:15 +0000 (20:44 -0700)]
Merge branch 'maint-1.6.2' into maint-1.6.3

* maint-1.6.2:
  verify-pack -v: do not report "chain length 0"
  t5510: harden the way verify-pack is used

11 years agoMerge branch 'maint-1.6.1' into maint-1.6.2
Junio C Hamano [Sat, 8 Aug 2009 03:44:09 +0000 (20:44 -0700)]
Merge branch 'maint-1.6.1' into maint-1.6.2

* maint-1.6.1:
  verify-pack -v: do not report "chain length 0"
  t5510: harden the way verify-pack is used