git
11 years agoMerge branch 'tr/coverage'
Junio C Hamano [Sun, 2 Jun 2013 22:57:18 +0000 (15:57 -0700)] 
Merge branch 'tr/coverage'

Update the test coverage support that was left to bitrot for some
time.

* tr/coverage:
  coverage: build coverage-untested-functions by default
  coverage: set DEFAULT_TEST_TARGET to avoid using prove
  coverage: do not delete .gcno files before building
  coverage: split build target into compile and test

11 years agoMerge branch 'mk/combine-diff-context-horizon-fix'
Junio C Hamano [Sun, 2 Jun 2013 22:56:46 +0000 (15:56 -0700)] 
Merge branch 'mk/combine-diff-context-horizon-fix'

"git diff -c -p" was not showing a deleted line from a hunk when
another hunk immediately begins where the earlier one ends.

* mk/combine-diff-context-horizon-fix:
  combine-diff.c: Fix output when changes are exactly 3 lines apart

11 years agoMerge branch 'kb/ancestry-path-threedots'
Junio C Hamano [Sun, 2 Jun 2013 22:56:11 +0000 (15:56 -0700)] 
Merge branch 'kb/ancestry-path-threedots'

"git log --ancestry-path A...B" did not work as expected, as it did
not pay attention to the fact that the merge base between A and B
was the bottom of the range being specified.

* kb/ancestry-path-threedots:
  revision.c: treat A...B merge bases as if manually specified
  t6019: demonstrate --ancestry-path A...B breakage

11 years agoMerge branch 'jc/t5551-posix-sed-bre'
Junio C Hamano [Sun, 2 Jun 2013 22:56:08 +0000 (15:56 -0700)] 
Merge branch 'jc/t5551-posix-sed-bre'

POSIX fix for a test script.

* jc/t5551-posix-sed-bre:
  t5551: do not use unportable sed '\+'

11 years agoMerge branch 'da/darwin'
Junio C Hamano [Sun, 2 Jun 2013 22:55:48 +0000 (15:55 -0700)] 
Merge branch 'da/darwin'

Newer MacOS X encourages the programs to compile and link with
their CommonCrypto, not with OpenSSL.

* da/darwin:
  imap-send: eliminate HMAC deprecation warnings on Mac OS X
  cache.h: eliminate SHA-1 deprecation warnings on Mac OS X
  Makefile: add support for Apple CommonCrypto facility
  Makefile: fix default regex settings on Darwin

11 years agoMerge branch 'fc/macos-x-clipped-write'
Junio C Hamano [Sun, 2 Jun 2013 22:54:54 +0000 (15:54 -0700)] 
Merge branch 'fc/macos-x-clipped-write'

Mac OS X does not like to write(2) more than INT_MAX number of
bytes.

* fc/macos-x-clipped-write:
  compate/clipped-write.c: large write(2) fails on Mac OS X/XNU

11 years agoMerge branch 'vv/help-unknown-ref'
Junio C Hamano [Sun, 2 Jun 2013 22:54:06 +0000 (15:54 -0700)] 
Merge branch 'vv/help-unknown-ref'

Detect "git merge foo" that might have meant "git merge origin/foo"
and give an error message that is more specific than "foo is not
something we can merge".

* vv/help-unknown-ref:
  merge: use help_unknown_ref()
  help: add help_unknown_ref()

11 years agoMerge branch 'nd/clone-local-with-colon'
Junio C Hamano [Sun, 2 Jun 2013 22:52:22 +0000 (15:52 -0700)] 
Merge branch 'nd/clone-local-with-colon'

"git clone foo/bar:baz" cannot be a request to clone from a remote
over git-over-ssh specified in the scp style.  Detect this case and
clone from a local repository at "foo/bar:baz".

* nd/clone-local-with-colon:
  clone: allow cloning local paths with colons in them

11 years agoMerge branch 'fc/fast-export-persistent-marks'
Junio C Hamano [Sun, 2 Jun 2013 22:48:28 +0000 (15:48 -0700)] 
Merge branch 'fc/fast-export-persistent-marks'

Optimization for fast-export by avoiding unnecessarily resolving
arbitrary object name and parsing object when only presence and
type information is necessary, etc.

* fc/fast-export-persistent-marks:
  fast-{import,export}: use get_sha1_hex() to read from marks file
  fast-export: don't parse commits while reading marks file
  fast-export: do not parse non-commit objects while reading marks file

11 years agoMerge branch 'rs/empty-archive'
Junio C Hamano [Sun, 2 Jun 2013 22:48:24 +0000 (15:48 -0700)] 
Merge branch 'rs/empty-archive'

Fixes tests added in 1.8.2 era that are broken on BSDs.

* rs/empty-archive:
  t5004: resurrect original empty tar archive test
  t5004: avoid using tar for checking emptiness of archive

11 years agoMerge branch 'rh/merge-options-doc-fix'
Junio C Hamano [Sun, 2 Jun 2013 22:48:22 +0000 (15:48 -0700)] 
Merge branch 'rh/merge-options-doc-fix'

* rh/merge-options-doc-fix:
  Documentation/merge-options.txt: restore `-e` option

11 years agoMerge branch 'an/diff-index-doc'
Junio C Hamano [Sun, 2 Jun 2013 22:48:17 +0000 (15:48 -0700)] 
Merge branch 'an/diff-index-doc'

* an/diff-index-doc:
  Documentation/diff-index: mention two modes of operation

11 years agoMerge branch 'fc/completion'
Junio C Hamano [Sun, 2 Jun 2013 22:48:12 +0000 (15:48 -0700)] 
Merge branch 'fc/completion'

* fc/completion:
  completion: remove __git_index_file_list_filter()
  completion: add space after completed filename
  completion: add hack to enable file mode in bash < 4
  completion: refactor __git_complete_index_file()
  completion: refactor diff_index wrappers
  completion: use __gitcompadd for __gitcomp_file
  completion; remove unuseful comments
  completion: document tilde expansion failure in tests
  completion: add file completion tests

11 years agoMerge branch 'fc/zsh-leftover-bits'
Junio C Hamano [Sun, 2 Jun 2013 22:47:33 +0000 (15:47 -0700)] 
Merge branch 'fc/zsh-leftover-bits'

* fc/zsh-leftover-bits:
  completion: zsh: improve bash script loading
  completion: synchronize zsh wrapper
  completion: cleanup zsh wrapper

11 years agoSync with maint
Junio C Hamano [Wed, 29 May 2013 22:21:47 +0000 (15:21 -0700)] 
Sync with maint

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoStart 1.8.3.1 maintenance track
Junio C Hamano [Wed, 29 May 2013 22:21:15 +0000 (15:21 -0700)] 
Start 1.8.3.1 maintenance track

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'maint-1.8.2' into maint
Junio C Hamano [Wed, 29 May 2013 22:20:36 +0000 (15:20 -0700)] 
Merge branch 'maint-1.8.2' into maint

* maint-1.8.2:
  trivial: Add missing period in documentation

11 years agoStart 1.8.4 cycle
Junio C Hamano [Wed, 29 May 2013 22:19:12 +0000 (15:19 -0700)] 
Start 1.8.4 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jn/config-ignore-inaccessible'
Junio C Hamano [Wed, 29 May 2013 21:30:10 +0000 (14:30 -0700)] 
Merge branch 'jn/config-ignore-inaccessible'

When $HOME is misconfigured to point at an unreadable directory, we
used to complain and die. This loosens the check.

* jn/config-ignore-inaccessible:
  config: allow inaccessible configuration under $HOME

11 years agoMerge branch 'jk/lookup-object-prefer-latest'
Junio C Hamano [Wed, 29 May 2013 21:29:58 +0000 (14:29 -0700)] 
Merge branch 'jk/lookup-object-prefer-latest'

Optimizes object lookup when the object hashtable starts to become
crowded.

* jk/lookup-object-prefer-latest:
  lookup_object: prioritize recently found objects

11 years agoMerge branch 'jk/subtree-do-not-push-if-split-fails'
Junio C Hamano [Wed, 29 May 2013 21:29:53 +0000 (14:29 -0700)] 
Merge branch 'jk/subtree-do-not-push-if-split-fails'

"git subtree" (in contrib/) had one codepath with loose error
checks to lose data at the remote side.

* jk/subtree-do-not-push-if-split-fails:
  contrib/subtree: don't delete remote branches if split fails

11 years agoMerge branch 'jk/test-output'
Junio C Hamano [Wed, 29 May 2013 21:29:11 +0000 (14:29 -0700)] 
Merge branch 'jk/test-output'

When TEST_OUTPUT_DIRECTORY setting is used, it was handled somewhat
inconsistently between the test framework and t/Makefile, and logic
to summarize the results looked at a wrong place.

* jk/test-output:
  t/Makefile: don't define TEST_RESULTS_DIRECTORY recursively
  test output: respect $TEST_OUTPUT_DIRECTORY
  t/Makefile: fix result handling with TEST_OUTPUT_DIRECTORY

11 years agoMerge branch 'rj/sparse'
Junio C Hamano [Wed, 29 May 2013 21:24:02 +0000 (14:24 -0700)] 
Merge branch 'rj/sparse'

* rj/sparse:
  sparse: Fix mingw_main() argument number/type errors
  compat/mingw.c: Fix some sparse warnings
  compat/win32mmap.c: Fix some sparse warnings
  compat/poll/poll.c: Fix a sparse warning
  compat/win32/pthread.c: Fix a sparse warning
  compat/unsetenv.c: Fix a sparse warning
  compat/nedmalloc: Fix compiler warnings on linux
  compat/nedmalloc: Fix some sparse warnings
  compat/fnmatch/fnmatch.c: Fix a sparse error
  compat/regex/regexec.c: Fix some sparse warnings

11 years agoMerge branch 'mh/packed-refs-various'
Junio C Hamano [Wed, 29 May 2013 21:23:49 +0000 (14:23 -0700)] 
Merge branch 'mh/packed-refs-various'

Update reading and updating packed-refs file, correcting corner case
bugs.

* mh/packed-refs-various: (33 commits)
  refs: handle the main ref_cache specially
  refs: change do_for_each_*() functions to take ref_cache arguments
  pack_one_ref(): do some cheap tests before a more expensive one
  pack_one_ref(): use write_packed_entry() to do the writing
  pack_one_ref(): use function peel_entry()
  refs: inline function do_not_prune()
  pack_refs(): change to use do_for_each_entry()
  refs: use same lock_file object for both ref-packing functions
  pack_one_ref(): rename "path" parameter to "refname"
  pack-refs: merge code from pack-refs.{c,h} into refs.{c,h}
  pack-refs: rename handle_one_ref() to pack_one_ref()
  refs: extract a function write_packed_entry()
  repack_without_ref(): write peeled refs in the rewritten file
  t3211: demonstrate loss of peeled refs if a packed ref is deleted
  refs: change how packed refs are deleted
  search_ref_dir(): return an index rather than a pointer
  repack_without_ref(): silence errors for dangling packed refs
  t3210: test for spurious error messages for dangling packed refs
  refs: change the internal reference-iteration API
  refs: extract a function peel_entry()
  ...

11 years agoMerge branch 'as/check-ignore'
Junio C Hamano [Wed, 29 May 2013 21:23:39 +0000 (14:23 -0700)] 
Merge branch 'as/check-ignore'

Enhance "check-ignore" (1.8.2 update) to work more like "check-attr"
over bidi-pipes.

* as/check-ignore:
  t0008: use named pipe (FIFO) to test check-ignore streaming
  Documentation: add caveats about I/O buffering for check-{attr,ignore}
  check-ignore: allow incremental streaming of queries via --stdin
  check-ignore: move setup into cmd_check_ignore()
  check-ignore: add -n / --non-matching option
  t0008: remove duplicated test fixture data

11 years agoMerge branch 'jh/checkout-auto-tracking'
Junio C Hamano [Wed, 29 May 2013 21:23:10 +0000 (14:23 -0700)] 
Merge branch 'jh/checkout-auto-tracking'

Update "git checkout foo" that DWIMs the intended "upstream" and
turns it into "git checkout -t -b foo remotes/origin/foo" to
correctly take existing remote definitions into account.

The remote "origin" may be what uniquely map its own branch to
remotes/some/where/foo but that some/where may not be "origin".

* jh/checkout-auto-tracking:
  glossary: Update and rephrase the definition of a remote-tracking branch
  branch.c: Validate tracking branches with refspecs instead of refs/remotes/*
  t9114.2: Don't use --track option against "svn-remote"-tracking branches
  t7201.24: Add refspec to keep --track working
  t3200.39: tracking setup should fail if there is no matching refspec.
  checkout: Use remote refspecs when DWIMming tracking branches
  t2024: Show failure to use refspec when DWIMming remote branch names
  t2024: Add tests verifying current DWIM behavior of 'git checkout <branch>'

11 years agoMerge branch 'jc/prune-all'
Junio C Hamano [Wed, 29 May 2013 21:23:03 +0000 (14:23 -0700)] 
Merge branch 'jc/prune-all'

We used the approxidate() parser for "--expire=<timestamp>" options
of various commands, but it is better to treat --expire=all and
--expire=now a bit more specially than using the current timestamp.
Update "git gc" and "git reflog" with a new parsing function for
expiry dates.

* jc/prune-all:
  prune: introduce OPT_EXPIRY_DATE() and use it
  api-parse-options.txt: document "no-" for non-boolean options
  git-gc.txt, git-reflog.txt: document new expiry options
  date.c: add parse_expiry_date()

11 years agoMerge branch 'mh/fetch-into-shallow'
Junio C Hamano [Wed, 29 May 2013 21:20:30 +0000 (14:20 -0700)] 
Merge branch 'mh/fetch-into-shallow'

"git fetch" into a shallow repository from a repository that does
not know about the shallow boundary commits (e.g. a different fork
from the repository the current shallow repository was cloned from)
did not work correctly.

* mh/fetch-into-shallow:
  t5500: add test for fetching with an unknown 'shallow'
  upload-pack: ignore 'shallow' lines with unknown obj-ids

11 years agoMerge branch 'js/transport-helper-error-reporting-fix'
Junio C Hamano [Wed, 29 May 2013 21:20:25 +0000 (14:20 -0700)] 
Merge branch 'js/transport-helper-error-reporting-fix'

Finishing touches to fc/transport-helper-error-reporting topic.

* js/transport-helper-error-reporting-fix:
  git-remote-testgit: build it to run under $SHELL_PATH
  git-remote-testgit: further remove some bashisms
  git-remote-testgit: avoid process substitution

11 years agoMerge branch 'fc/transport-helper-error-reporting'
Junio C Hamano [Wed, 29 May 2013 21:20:16 +0000 (14:20 -0700)] 
Merge branch 'fc/transport-helper-error-reporting'

Update transport helper to report errors and maintain ref hierarchy
used to keep track of remote helper state better.

* fc/transport-helper-error-reporting:
  transport-helper: fix remote helper namespace regression
  test: remote-helper: add missing and
  t5801: "VAR=VAL shell_func args" is forbidden
  transport-helper: update remote helper namespace
  transport-helper: trivial code shuffle
  transport-helper: warn when refspec is not used
  transport-helper: clarify pushing without refspecs
  transport-helper: update refspec documentation
  transport-helper: clarify *:* refspec
  transport-helper: improve push messages
  transport-helper: mention helper name when it dies
  transport-helper: report errors properly

11 years agocompletion: zsh: improve bash script loading
Felipe Contreras [Sat, 25 May 2013 03:31:44 +0000 (22:31 -0500)] 
completion: zsh: improve bash script loading

It's better to check in multiple locations, so the user doesn't have to.

And update the documentation.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotrivial: Add missing period in documentation
Phil Hord [Tue, 28 May 2013 19:36:44 +0000 (19:36 +0000)] 
trivial: Add missing period in documentation

Signed-off-by: Phil Hord <hordp@cisco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.8.3 v1.8.3
Junio C Hamano [Fri, 24 May 2013 18:34:46 +0000 (11:34 -0700)] 
Git 1.8.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoimap-send: eliminate HMAC deprecation warnings on Mac OS X
David Aguilar [Sun, 19 May 2013 10:23:36 +0000 (06:23 -0400)] 
imap-send: eliminate HMAC deprecation warnings on Mac OS X

As of Mac OS X 10.7, Apple deprecated all OpenSSL functions due to
OpenSSL ABI instability.  Silence the warnings by using Apple's
CommonCrypto HMAC replacement functions.

[es: reworded commit message; check APPLE_COMMON_CRYPTO instead of
abusing COMMON_DIGEST_FOR_OPENSSL]

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: fix order of configuration comments
Felipe Contreras [Tue, 21 May 2013 03:47:53 +0000 (22:47 -0500)] 
remote-hg: fix order of configuration comments

The other configurations were added in the wrong place.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: trivial configuration note cleanup
Felipe Contreras [Tue, 21 May 2013 03:47:52 +0000 (22:47 -0500)] 
remote-hg: trivial configuration note cleanup

Follow the style of the previous configurations.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocompletion: regression fix for zsh
Felipe Contreras [Tue, 21 May 2013 00:33:03 +0000 (19:33 -0500)] 
completion: regression fix for zsh

zsh completion wrapper doesn't reimplement __gitcompadd(). Although it
should be trivial to do that, let's use __gitcomp_nl() which achieves
exactly the same thing, specially since the suffix ($4) has to be empty.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Mon, 20 May 2013 23:06:48 +0000 (16:06 -0700)] 
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  git-svn: introduce --parents parameter for commands branch and tag
  git-svn: clarify explanation of --destination argument
  git-svn: multiple fetch/branches/tags keys are supported

11 years agoDocumentation/diff-index: mention two modes of operation
Junio C Hamano [Mon, 20 May 2013 05:01:20 +0000 (22:01 -0700)] 
Documentation/diff-index: mention two modes of operation

"diff-index" can be used to compare a tree with the tracked working
tree files (when used without the --index option), or with the index
(when used with the --index option).

The text however did not say anything about the comparison with the
working tree at all.  Fix this.

Reported-by: Albert Netymk <albertnetymk@gmail.com>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-svn: introduce --parents parameter for commands branch and tag
Tobias Schulte [Wed, 15 May 2013 20:14:43 +0000 (22:14 +0200)] 
git-svn: introduce --parents parameter for commands branch and tag

This parameter is equivalent to the parameter --parents on svn cp commands
and is useful for non-standard repository layouts.

Signed-off-by: Tobias Schulte <tobias.schulte@gliderpilot.de>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agogit-svn: clarify explanation of --destination argument
Jonathan Nieder [Tue, 20 Dec 2011 01:24:30 +0000 (19:24 -0600)] 
git-svn: clarify explanation of --destination argument

The existing documentation for "-d" does not make it obvious whether
its argument is supposed to be a full svn path, a partial svn path,
the glob from the config file, or what.  Clarify the text and add an
example to get the reader started.

Reported-by: Nathan Gray <n8gray@n8gray.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agogit-svn: multiple fetch/branches/tags keys are supported
Nathan Gray [Tue, 20 Dec 2011 01:23:50 +0000 (19:23 -0600)] 
git-svn: multiple fetch/branches/tags keys are supported

"git svn" can be configured to use multiple fetch, branches, and tags
refspecs by passing multiple --branches or --tags options at init time
or editing the configuration file later, which can be handy when
working with messy Subversion repositories.  Add a note to the
configuration section documenting how this works.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoremote-hg: set stdout to binary mode on win32
Amit Bakshi [Sun, 19 May 2013 11:53:48 +0000 (06:53 -0500)] 
remote-hg: set stdout to binary mode on win32

git clone hangs on windows, and file.write would return errno 22 inside
of mercurial's windows.winstdout wrapper class. This patch sets stdout's
mode to binary, fixing both issues.

[fc: cleaned up]

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocache.h: eliminate SHA-1 deprecation warnings on Mac OS X
David Aguilar [Sun, 19 May 2013 10:23:35 +0000 (06:23 -0400)] 
cache.h: eliminate SHA-1 deprecation warnings on Mac OS X

As of Mac OS X 10.7, Apple deprecated all OpenSSL functions due to
OpenSSL ABI instability, thus leading to build diagnostics such as:

warning: 'SHA1_Init' is deprecated
(declared at /usr/include/openssl/sha.h:121)

Silence the warnings by using Apple's CommonCrypto SHA-1 replacement
functions for SHA1_Init(), SHA1_Update(), and SHA1_Final().

COMMON_DIGEST_FOR_OPENSSL is defined to instruct
<CommonCrypto/CommonDigest.h> to provide compatibility macros
associating OpenSSL SHA-1 functions with their CommonCrypto
counterparts.

[es: reworded commit message]

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMakefile: add support for Apple CommonCrypto facility
David Aguilar [Sun, 19 May 2013 10:23:34 +0000 (06:23 -0400)] 
Makefile: add support for Apple CommonCrypto facility

As of Mac OS X 10.7, Apple deprecated all OpenSSL functions due to
OpenSSL ABI instability, thus leading to build warnings.  As a
replacement, Apple encourages developers to migrate to its own (stable)
CommonCrypto facility.

Introduce boilerplate which controls whether Apple's CommonCrypto
facility is employed (enabled by default).  Also add a
NO_APPLE_COMMON_CRYPTO build flag with which the user can opt out to
use OpenSSL instead.

[es: extracted CommonCrypto-related Makefile boilerplate into separate
introductory patch]

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.8.3-rc3 v1.8.3-rc3
Junio C Hamano [Fri, 17 May 2013 19:19:20 +0000 (12:19 -0700)] 
Git 1.8.3-rc3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'fc/doc-style'
Junio C Hamano [Fri, 17 May 2013 19:16:49 +0000 (12:16 -0700)] 
Merge branch 'fc/doc-style'

* fc/doc-style:
  documentation: trivial style cleanups

11 years agoMerge branch 'dw/asciidoc-sources-are-dot-txt-files'
Junio C Hamano [Fri, 17 May 2013 19:16:44 +0000 (12:16 -0700)] 
Merge branch 'dw/asciidoc-sources-are-dot-txt-files'

* dw/asciidoc-sources-are-dot-txt-files:
  CodingGuidelines: Documentation/*.txt are the sources

11 years agocompate/clipped-write.c: large write(2) fails on Mac OS X/XNU
Filipe Cabecinhas [Fri, 10 May 2013 22:24:57 +0000 (15:24 -0700)] 
compate/clipped-write.c: large write(2) fails on Mac OS X/XNU

Due to a bug in the Darwin kernel, write(2) calls have a maximum size
of INT_MAX bytes.

Introduce a new compat function, clipped_write(), that only writes
at most INT_MAX bytes and returns the number of bytes written, as
a substitute for write(2), and allow platforms that need this to
enable it from the build mechanism with NEEDS_CLIPPED_WRITE.

Set it for Mac OS X by default.  It may be necessary to include this
function on Windows, too.

Signed-off-by: Filipe Cabecinhas <filcab+git@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodocumentation: trivial style cleanups
Felipe Contreras [Thu, 9 May 2013 01:16:55 +0000 (20:16 -0500)] 
documentation: trivial style cleanups

White-spaces, missing braces, standardize --[no-]foo.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge git://ozlabs.org/~paulus/gitk
Junio C Hamano [Fri, 17 May 2013 18:55:02 +0000 (11:55 -0700)] 
Merge git://ozlabs.org/~paulus/gitk

* git://ozlabs.org/~paulus/gitk:
  gitk: Update Swedish translation (304t)

11 years agodifftool: fix dir-diff when file does not exist in working tree
John Keeping [Fri, 17 May 2013 18:26:08 +0000 (19:26 +0100)] 
difftool: fix dir-diff when file does not exist in working tree

Commit 02c5631 (difftool --dir-diff: symlink all files matching the
working tree, 2013-03-14) does not handle the case where a file that is
being compared does not exist in the working tree.  Fix this by checking
for existence explicitly before running git-hash-object.

Reported-by: Kevin Bracey <kevin@bracey.fi>
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: fixes for older versions of bzr
Felipe Contreras [Fri, 17 May 2013 17:10:19 +0000 (12:10 -0500)] 
remote-bzr: fixes for older versions of bzr

Down to v2.0, by using older but still valid interfaces.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: fix old organization destroy
Sandor Bodo-Merle [Fri, 17 May 2013 10:32:28 +0000 (05:32 -0500)] 
remote-bzr: fix old organization destroy

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation/merge-options.txt: restore `-e` option
Richard Hansen [Thu, 16 May 2013 22:26:00 +0000 (18:26 -0400)] 
Documentation/merge-options.txt: restore `-e` option

It looks like commit f8246281af9adb0fdddbcc90d2e19cb5cd5217e5
unintentionally removed the documentation for the `-e` option.

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogitk: Update Swedish translation (304t)
Peter Krefting [Thu, 16 May 2013 07:14:35 +0000 (08:14 +0100)] 
gitk: Update Swedish translation (304t)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agoRevert "remote-hg: update bookmarks when pulling"
Felipe Contreras [Thu, 16 May 2013 12:43:15 +0000 (07:43 -0500)] 
Revert "remote-hg: update bookmarks when pulling"

This reverts commit 24317ef32ac3111ed00792f9b2921dc19dd28fe2.

Different versions of Mercurial have different arguments for
bookmarks.updatefromremote(), while it should be possible to call the
right function with the right arguments depending on the version, it's
safer to restore the old behavior for now.

Reported by Rodney Lorrimar.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-submodule.txt: Clarify 'init' and 'add' subcommands.
Dale R. Worley [Wed, 15 May 2013 22:28:39 +0000 (18:28 -0400)] 
git-submodule.txt: Clarify 'init' and 'add' subcommands.

Describe how 'add' sets the submodule's logical name, which is used in
the configuration entry names.

Clarify that 'init' only sets up the configuration entries for
submodules that have already been added elsewhere.  Describe that
<path> arguments limit the submodules that are configured.

Signed-off-by: Dale Worley <worley@ariadne.com>
Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agorevision.c: treat A...B merge bases as if manually specified
Kevin Bracey [Mon, 13 May 2013 15:00:47 +0000 (18:00 +0300)] 
revision.c: treat A...B merge bases as if manually specified

The documentation assures users that "A...B" is defined as "A B --not
$(git merge-base --all A B)". This wasn't in fact quite true, because
the calculated merge bases were not sent to add_rev_cmdline().

The main effect of this was that although

  git rev-list --ancestry-path A B --not $(git merge-base --all A B)

worked, the simpler form

  git rev-list --ancestry-path A...B

failed with a "no bottom commits" error.

Other potential users of bottom commits could also be affected by this
problem, if they examine revs->cmdline_info; I came across the issue in
my proposed history traversal refinements series.

So ensure that the calculated merge bases are sent to add_rev_cmdline(),
flagged with new 'whence' enum value REV_CMD_MERGE_BASE.

Signed-off-by: Kevin Bracey <kevin@bracey.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: fix cloning of non-listable repos
Felipe Contreras [Thu, 16 May 2013 10:04:05 +0000 (05:04 -0500)] 
remote-bzr: fix cloning of non-listable repos

Commit 95b0c60 (remote-bzr: add support for bzr repos) introduced a
regression by assuming all bzr remote repos are listable, but they are
not.

If they are not listable they are basically useless, so let's assume
there is no bzr repo.

Reported-by: Thorsten Kranzkowski <dl8bcu@dl8bcu.de>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'fc/remote-hg' (early part)
Junio C Hamano [Wed, 15 May 2013 21:58:56 +0000 (14:58 -0700)] 
Merge branch 'fc/remote-hg' (early part)

* 'fc/remote-hg' (early part):
  remote-hg: update bookmarks when pulling
  remote-hg: don't push fake 'master' bookmark
  remote-hg: disable forced push by default
  remote-hg: fix new branch creation
  remote-hg: add new get_config_bool() helper
  remote-hg: enable track-branches in hg-git mode
  remote-hg: get rid of unused exception checks
  remote-hg: trivial cleanups

11 years agoremote-hg: update bookmarks when pulling
Felipe Contreras [Tue, 14 May 2013 04:36:31 +0000 (23:36 -0500)] 
remote-hg: update bookmarks when pulling

Otherwise, the user would never ever see new bookmarks, only the
ones that (s)he initially cloned.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: don't push fake 'master' bookmark
Felipe Contreras [Tue, 14 May 2013 04:36:30 +0000 (23:36 -0500)] 
remote-hg: don't push fake 'master' bookmark

We skip it locally, but not for the remote, so let's do so.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: disable forced push by default
Felipe Contreras [Tue, 14 May 2013 04:36:29 +0000 (23:36 -0500)] 
remote-hg: disable forced push by default

In certain situations we might end up pushing garbage revisions
(e.g. in a rebase), and the patches to deal with that haven't been
merged yet.  So let's disable forced pushes by default.

We are essentially reverting back to the old v1.8.2 behavior, to
minimize the possibility of regressions, but in a way the user can
configure.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: fix new branch creation
Felipe Contreras [Tue, 14 May 2013 04:36:28 +0000 (23:36 -0500)] 
remote-hg: fix new branch creation

When a user creates a new branch with git:

 % git checkout -b branches/devel

and then pushes this branch

 % git push origin branches/devel

which is the way to push new mercurial branches, we do want to
create a branch, but the command would fail without newbranch=True.

This only matters when force_push=False, but setting newbranch=True
unconditionally does not hurt.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: add new get_config_bool() helper
Felipe Contreras [Tue, 14 May 2013 04:36:27 +0000 (23:36 -0500)] 
remote-hg: add new get_config_bool() helper

No functional changes.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: enable track-branches in hg-git mode
Felipe Contreras [Tue, 14 May 2013 04:36:26 +0000 (23:36 -0500)] 
remote-hg: enable track-branches in hg-git mode

The user can turn this off.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: get rid of unused exception checks
Felipe Contreras [Tue, 14 May 2013 04:36:25 +0000 (23:36 -0500)] 
remote-hg: get rid of unused exception checks

Remove try/except check because we are no longer calling
check_output(), which may throw an exception.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-hg: trivial cleanups
Felipe Contreras [Tue, 14 May 2013 04:36:24 +0000 (23:36 -0500)] 
remote-hg: trivial cleanups

Drop unused "global", and remove redundant comparison of two files.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocombine-diff.c: Fix output when changes are exactly 3 lines apart
Matthijs Kooijman [Wed, 15 May 2013 17:42:14 +0000 (19:42 +0200)] 
combine-diff.c: Fix output when changes are exactly 3 lines apart

When a deletion is followed by exactly 3 (or whatever the number of
context lines) unchanged lines, followed by another change, the combined
diff output would hide the first deletion, resulting in a malformed
diff.

This happened because the 3 lines before each change are painted
interesting, but also marked as no_pre_delete to prevent showing deletes
that were previously marked as uninteresting. This behaviour was
introduced in c86fbe53 (diff -c/--cc: do not include uninteresting
deletion before leading context). However, as a side effect, this could
also mark deletes that were already interesting as no_pre_delete. This
would happen only if the delete was exactly 3 lines away from the next
change, since lines farther away would not be touched by the "paint
three lines before the change" code and lines closer would be painted
by the "merge two adjacent hunks" code instead, which does not set the
no_pre_delete flag.

This commit fixes this problem by only setting the no_pre_delete flag
for changes that were previously uninteresting.

Signed-off-by: Matthijs Kooijman <matthijs@stdin.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: update old organization
Felipe Contreras [Tue, 14 May 2013 04:20:27 +0000 (23:20 -0500)] 
remote-bzr: update old organization

If a clone exists with the old organization (v1.8.2) it will prevent
the new shared bzr repository organization from working, so let's
remove this repository, which is not used any more.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocoverage: build coverage-untested-functions by default
Thomas Rast [Mon, 13 May 2013 21:27:28 +0000 (23:27 +0200)] 
coverage: build coverage-untested-functions by default

Change the 'coverage' target to build coverage-untested-functions by
default, so as to make it more discoverable.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocoverage: set DEFAULT_TEST_TARGET to avoid using prove
Thomas Rast [Mon, 13 May 2013 21:27:27 +0000 (23:27 +0200)] 
coverage: set DEFAULT_TEST_TARGET to avoid using prove

If the user sets DEFAULT_TEST_TARGET=prove in his config.mak, that
carries over into the coverage tests.  Which is really bad if he also
sets GIT_PROVE_OPTS=-j<..> as that completely breaks the coverage
runs.

Instead of attempting to mess with the GIT_PROVE_OPTS, just force the
test target to 'test' so that we run under make, like we intended all
along.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocoverage: do not delete .gcno files before building
Thomas Rast [Mon, 13 May 2013 21:27:26 +0000 (23:27 +0200)] 
coverage: do not delete .gcno files before building

The coverage-compile target depends on coverage-clean, which is
supposed to remove the earlier build products that would get in the
way of the next coverage test run.

However, removing *.gcno is actively wrong.  These are the files that
contain the compile-time coverage related data.  They are only rebuilt
if the source is compiled.  So if one ran 'make coverage' two times in
a row, the second run would remove *.gcno, but then fail to recreate
them because neither source files nor build flags have changed.  (This
remained hidden for so long most likely because any other intervening
use of 'make' will change the build flags, causing a full rebuild.)

So we make an exception for *.gcno.  The *.gcda are the coverage
results, written when the gcov-instrumented program is run.  We still
remove those, so as to get a one-test-run view of the data; you could
probably argue the other way too.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocoverage: split build target into compile and test
Thomas Rast [Mon, 13 May 2013 21:27:25 +0000 (23:27 +0200)] 
coverage: split build target into compile and test

Confusingly, the coverage-build target in fact builds with gcov
support _and runs tests_.

Split it into two targets that actually are named after what they do.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.8.3-rc2 v1.8.3-rc2
Junio C Hamano [Mon, 13 May 2013 18:09:42 +0000 (11:09 -0700)] 
Git 1.8.3-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot6019: demonstrate --ancestry-path A...B breakage
Kevin Bracey [Mon, 13 May 2013 15:00:46 +0000 (18:00 +0300)] 
t6019: demonstrate --ancestry-path A...B breakage

Signed-off-by: Kevin Bracey <kevin@bracey.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge git://ozlabs.org/~paulus/gitk
Junio C Hamano [Mon, 13 May 2013 14:51:41 +0000 (07:51 -0700)] 
Merge git://ozlabs.org/~paulus/gitk

* git://ozlabs.org/~paulus/gitk:
  gitk: On OSX, bring the gitk window to front
  gitk: Add support for -G'regex' pickaxe variant
  gitk: Add menu item for reverting commits
  gitk: Simplify file filtering
  gitk: Display the date of a tag in a human-friendly way
  gitk: Improve behaviour of drop-down lists
  gitk: Move hard-coded colors to .gitk

11 years agogitk: On OSX, bring the gitk window to front
Tair Sabirgaliev [Wed, 24 Apr 2013 09:48:27 +0000 (15:48 +0600)] 
gitk: On OSX, bring the gitk window to front

On OSX, Tcl/Tk application windows are created behind all
the applications down the stack of windows.  This is very
annoying, because once a gitk window appears, it's the
downmost window and switching to it is pain.

The patch is: if we are on OSX, use osascript to
bring the current Wish process window to front.

Signed-off-by: Tair Sabirgaliev <tair.sabirgaliev@gmail.com>
Thanks-to: Stefan Haller <lists@haller-berlin.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agogitk: Add support for -G'regex' pickaxe variant
Martin Langhoff [Thu, 14 Jun 2012 18:34:11 +0000 (20:34 +0200)] 
gitk: Add support for -G'regex' pickaxe variant

git log -G'regex' is a very useful alternative to the classic
pickaxe.  Minimal patch to make it usable from gitk.

[zj: reword message]
[paulus@samba.org: reword droplist item]
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agot5551: do not use unportable sed '\+'
Junio C Hamano [Sun, 12 May 2013 22:50:59 +0000 (15:50 -0700)] 
t5551: do not use unportable sed '\+'

The set-up step to prepare a repository with 50000 tags used a
non-porable '\+' to match one-or-more.

The error was not caught because the next test that uses that
repository did not even bother to check if these expected tags were
actually cloned to the resulting repository.

Fix the sed construct to use BRE and update the "clone" test that
wanted to test cloning from such a repository with many refs to
check the resulting repository.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotest-bzr: do not use unportable sed '\+'
Torsten Bögershausen [Sat, 11 May 2013 13:25:52 +0000 (15:25 +0200)] 
test-bzr: do not use unportable sed '\+'

Using sed -e '/[0-9]\+//' to find "one or more digits" is not
portable.

Use the Basic Regular Expression '/[0-9][0-9]*//' instead.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Sat, 11 May 2013 18:09:00 +0000 (11:09 -0700)] 
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  git-svn: added an --include-path flag
  Git::SVN::*: add missing "NAME" section to perldoc
  git-svn: avoid self-referencing mergeinfo

11 years agoMakefile: fix default regex settings on Darwin
David Aguilar [Sat, 11 May 2013 08:22:26 +0000 (01:22 -0700)] 
Makefile: fix default regex settings on Darwin

t0070-fundamental.sh fails on Mac OS X 10.8:

$ uname -a
Darwin lustrous 12.2.0 Darwin Kernel Version 12.2.0:
Sat Aug 25 00:48:52 PDT 2012;
root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

$ ./t0070-fundamental.sh -v
fatal: regex bug confirmed: re-build git with NO_REGEX=1

Fix it by using Git's regex library.

Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogitk: Add menu item for reverting commits
Knut Franke [Sat, 27 Apr 2013 14:36:13 +0000 (16:36 +0200)] 
gitk: Add menu item for reverting commits

Sometimes it's helpful (at least psychologically) to have this feature
easily accessible.  Code borrows heavily from cherrypick.

Signed-off-by: Knut Franke <Knut.Franke@gmx.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agogitk: Simplify file filtering
Felipe Contreras [Sat, 27 Apr 2013 22:01:39 +0000 (17:01 -0500)] 
gitk: Simplify file filtering

git diff is perfectly able to do this with '-- files', no need for
manual filtering.  This makes gettreediffs consistent with getblobdiffs.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agogitk: Display the date of a tag in a human-friendly way
Anand Kumria [Mon, 29 Apr 2013 05:20:48 +0000 (06:20 +0100)] 
gitk: Display the date of a tag in a human-friendly way

By selecting a tag within gitk you can display information about it.
This information is output by using the command

 'git cat-file tag <tagid>'

This outputs the *raw* information from the tag, amongst which is the
time - in seconds since the epoch. As useful as that value is, I find it
a lot easier to read and process time which it is something like:

 "Mon Dec 31 14:26:11 2012 -0800"

This change will modify the display of tags in gitk like so:

  @@ -1,7 +1,7 @@
   object 5d417842efeafb6e109db7574196901c4e95d273
   type commit
   tag v1.8.1
  -tagger Junio C Hamano <gitster@pobox.com> 1356992771 -0800
  +tagger Junio C Hamano <gitster@pobox.com> Mon Dec 31 14:26:11 2012 -0800

   Git 1.8.1
   -----BEGIN PGP SIGNATURE-----

Signed-off-by: Anand Kumria <wildfire@progsoc.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agogitk: Improve behaviour of drop-down lists
Paul Mackerras [Sat, 11 May 2013 07:08:41 +0000 (17:08 +1000)] 
gitk: Improve behaviour of drop-down lists

The drop-down lists used for things like the criteria for finding
commits (containing/touching paths/etc.) use a combobox if we are
using the ttk widgets.  By default the combobox exports its value
as the selection when it is changed, which is unnecessary, and sometimes
the combobox wouldn't release the selection, which is annoying.

To fix this, we make these comboboxes not export their selection,
and also clear their selection whenever they are changed.  This makes
them more like a simple selection of alternatives, improving the look
and feel of gitk.

Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agotransport-helper: fix remote helper namespace regression
Felipe Contreras [Fri, 10 May 2013 12:08:30 +0000 (07:08 -0500)] 
transport-helper: fix remote helper namespace regression

Commit 664059f (transport-helper: update remote helper namespace)
updates the namespace when the push succeeds or not; we should do it
only when it succeeded.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoCodingGuidelines: Documentation/*.txt are the sources
Dale Worley [Tue, 7 May 2013 17:39:46 +0000 (13:39 -0400)] 
CodingGuidelines: Documentation/*.txt are the sources

People not familiar with AsciiDoc may not realize they are
supposed to update *.txt files and not *.html/*.1 files when
preparing patches to the project.

Signed-off-by: Dale Worley <worley@ariadne.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotest: remote-helper: add missing and
Felipe Contreras [Fri, 10 May 2013 12:08:29 +0000 (07:08 -0500)] 
test: remote-helper: add missing and

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSync with v1.8.2.3
Junio C Hamano [Thu, 9 May 2013 20:32:54 +0000 (13:32 -0700)] 
Sync with v1.8.2.3

* maint:
  Git 1.8.2.3
  t5004: avoid using tar for checking emptiness of archive
  t5004: ignore pax global header file
  mergetools/kdiff3: do not use --auto when diffing
  transport-helper: trivial style cleanup

11 years agoGit 1.8.2.3 v1.8.2.3
Junio C Hamano [Thu, 9 May 2013 19:37:53 +0000 (12:37 -0700)] 
Git 1.8.2.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'mv/sequencer-pick-error-diag'
Junio C Hamano [Thu, 9 May 2013 20:30:19 +0000 (13:30 -0700)] 
Merge branch 'mv/sequencer-pick-error-diag'

Fix "git cherry-pick $annotated_tag", which was mistakenly rejected.

* mv/sequencer-pick-error-diag:
  cherry-pick: picking a tag that resolves to a commit is OK

11 years agocherry-pick: picking a tag that resolves to a commit is OK
Junio C Hamano [Thu, 9 May 2013 20:27:49 +0000 (13:27 -0700)] 
cherry-pick: picking a tag that resolves to a commit is OK

Earlier, 21246dbb9e0a (cherry-pick: make sure all input objects are
commits, 2013-04-11) tried to catch an unlikely "git cherry-pick $blob"
as an error, but broke a more important use case to cherry-pick a
tag that points at a commit.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'tr/copy-revisions-from-stdin' into maint
Junio C Hamano [Thu, 9 May 2013 19:42:17 +0000 (12:42 -0700)] 
Merge branch 'tr/copy-revisions-from-stdin' into maint

* tr/copy-revisions-from-stdin:
  read_revisions_from_stdin: make copies for handle_revision_arg

11 years agot5004: avoid using tar for checking emptiness of archive
René Scharfe [Thu, 9 May 2013 13:13:47 +0000 (15:13 +0200)] 
t5004: avoid using tar for checking emptiness of archive

Test 2 of t5004 checks if a supposedly empty tar archive really
contains no files.  24676f02 (t5004: fix issue with empty archive test
and bsdtar) removed our commit hash to make it work with bsdtar, but
the test still fails on NetBSD and OpenBSD, which use their own tar
that considers a tar file containing only NULs as broken.

Here's what the different archivers do when asked to create a tar
file without entries:

$ uname -v
NetBSD 6.0.1 (GENERIC)
$ gtar --version | head -1
tar (GNU tar) 1.26
$ bsdtar --version
bsdtar 2.8.4 - libarchive 2.8.4

$ : >zero.tar
$ perl -e 'print "\0" x 10240' >tenk.tar
$ sha1 zero.tar tenk.tar
SHA1 (zero.tar) = da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA1 (tenk.tar) = 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c

$ : | tar cf - -T - | sha1
da39a3ee5e6b4b0d3255bfef95601890afd80709
$ : | gtar cf - -T - | sha1
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
$ : | bsdtar cf - -T - | sha1
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c

So NetBSD's native tar creates an empty file, while GNU tar and bsdtar
both give us 10KB of NULs -- just like git archive with an empty tree.
Now let's see how the archivers handle these two kinds of empty tar
files:

$ tar tf zero.tar; echo $?
tar: Unexpected EOF on archive file
1
$ gtar tf zero.tar; echo $?
gtar: This does not look like a tar archive
gtar: Exiting with failure status due to previous errors
2
$ bsdtar tf zero.tar; echo $?
0

$ tar tf tenk.tar; echo $?
tar: Cannot identify format. Searching...
tar: End of archive volume 1 reached
tar: Sorry, unable to determine archive format.
1
$ gtar tf tenk.tar; echo $?
0
$ bsdtar tf tenk.tar; echo $?
0

NetBSD's tar complains about both, bsdtar happily accepts any of them
and GNU tar doesn't like zero-length archive files.  So the safest
course of action is to stay with our block-of-NULs format which is
compatible with GNU tar and bsdtar, as we can't make NetBSD's native
tar happy anyway.

We can simplify our test, however, by taking tar out of the picture.
Instead of extracting the archive and checking for the non-presence of
files, check if the file has a size of 10KB and contains only NULs.
This makes t5004 pass on NetBSD and OpenBSD.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot5004: resurrect original empty tar archive test
René Scharfe [Thu, 9 May 2013 13:36:10 +0000 (15:36 +0200)] 
t5004: resurrect original empty tar archive test

Add a test to verify the emptiness of an archive by extracting its
contents.  Don't run this test if the version of tar doesn't support
archives containing only a comment header, though.

The existing check 'tar archive of empty tree is empty' used to work
like that (minus the tar capability check) but was changed to depend
on the exact representation of empty tar files created by git archive
instead of on the behaviour of tar in order to avoid issues with
different tar versions.

The different approaches test different things: The existing one is
for empty trees, for which we know the exact expected output and thus
we can simply check it without extracting; the new one is for commits
with empty trees, whose archives include stamps and so the more
"natural" check by extraction is a better fit because it focuses on
the interesting aspect, namely the absence of any archive entries.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot5004: avoid using tar for checking emptiness of archive
René Scharfe [Thu, 9 May 2013 13:13:47 +0000 (15:13 +0200)] 
t5004: avoid using tar for checking emptiness of archive

Test 2 of t5004 checks if a supposedly empty tar archive really
contains no files.  24676f02 (t5004: fix issue with empty archive test
and bsdtar) removed our commit hash to make it work with bsdtar, but
the test still fails on NetBSD and OpenBSD, which use their own tar
that considers a tar file containing only NULs as broken.

Here's what the different archivers do when asked to create a tar
file without entries:

$ uname -v
NetBSD 6.0.1 (GENERIC)
$ gtar --version | head -1
tar (GNU tar) 1.26
$ bsdtar --version
bsdtar 2.8.4 - libarchive 2.8.4

$ : >zero.tar
$ perl -e 'print "\0" x 10240' >tenk.tar
$ sha1 zero.tar tenk.tar
SHA1 (zero.tar) = da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA1 (tenk.tar) = 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c

$ : | tar cf - -T - | sha1
da39a3ee5e6b4b0d3255bfef95601890afd80709
$ : | gtar cf - -T - | sha1
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
$ : | bsdtar cf - -T - | sha1
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c

So NetBSD's native tar creates an empty file, while GNU tar and bsdtar
both give us 10KB of NULs -- just like git archive with an empty tree.
Now let's see how the archivers handle these two kinds of empty tar
files:

$ tar tf zero.tar; echo $?
tar: Unexpected EOF on archive file
1
$ gtar tf zero.tar; echo $?
gtar: This does not look like a tar archive
gtar: Exiting with failure status due to previous errors
2
$ bsdtar tf zero.tar; echo $?
0

$ tar tf tenk.tar; echo $?
tar: Cannot identify format. Searching...
tar: End of archive volume 1 reached
tar: Sorry, unable to determine archive format.
$ gtar tf tenk.tar; echo $?
0
$ bsdtar tf tenk.tar; echo $?
0

NetBSD's tar complains about both, bsdtar happily accepts any of them
and GNU tar doesn't like zero-length archive files.  So the safest
course of action is to stay with our block-of-NULs format which is
compatible with GNU tar and bsdtar, as we can't make NetBSD's native
tar happy anyway.

We can simplify our test, however, by taking tar out of the picture.
Instead of extracting the archive and checking for the non-presence of
files, check if the file has a size of 10KB and contains only NULs.
This makes t5004 pass on NetBSD and OpenBSD.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot5004: ignore pax global header file
René Scharfe [Thu, 9 May 2013 13:10:48 +0000 (15:10 +0200)] 
t5004: ignore pax global header file

Versions of tar that don't know pax headers -- like the ones in NetBSD 6
and OpenBSD 5.2 -- extract them as regular files.  Explicitly ignore the
file created for our global header when checking the list of extracted
files, as this is normal and harmless fall-back behaviour.  This fixes
test 3 of t5004 on these platforms.

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