git
12 years agoMerge branch 'jk/maint-commit-amend-only-no-paths' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:03:29 +0000 (13:03 -0700)] 
Merge branch 'jk/maint-commit-amend-only-no-paths' into maint

"git commit --amend --only --" was meant to allow "Clever" people to
rewrite the commit message without making any change even when they
have already changes for the next commit added to their index, but
it never worked as advertised since it was introduced in 1.3.0 era.

* jk/maint-commit-amend-only-no-paths:
  commit: fix "--amend --only" with no pathspec

12 years agoMerge branch 'tg/maint-cache-name-compare' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:01:56 +0000 (13:01 -0700)] 
Merge branch 'tg/maint-cache-name-compare' into maint

Even though the index can record pathnames longer than 1<<12 bytes,
in some places we were not comparing them in full, potentially
replacing index entries instead of adding.

* tg/maint-cache-name-compare:
  cache_name_compare(): do not truncate while comparing paths

12 years agoMerge branch 'tr/maint-show-walk' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:01:40 +0000 (13:01 -0700)] 
Merge branch 'tr/maint-show-walk' into maint

"git show"'s auto-walking behaviour was an unreliable and
unpredictable hack; it now behaves just like "git log" does when it
walks.

* tr/maint-show-walk:
  show: fix "range implies walking"
  Demonstrate git-show is broken with ranges

12 years agoMerge branch 'jc/refactor-diff-stdin' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:01:22 +0000 (13:01 -0700)] 
Merge branch 'jc/refactor-diff-stdin' into maint

"git diff", "git status" and anything that internally uses the
comparison machinery was utterly broken when the difference
involved a file with "-" as its name.  This was due to the way "git
diff --no-index" was incorrectly bolted on to the system, making
any comparison that involves a file "-" at the root level
incorrectly read from the standard input.

* jc/refactor-diff-stdin:
  diff-index.c: "git diff" has no need to read blob from the standard input
  diff-index.c: unify handling of command line paths
  diff-index.c: do not pretend paths are pathspecs

12 years agoMerge branch 'mz/empty-rebase-test' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:00:55 +0000 (13:00 -0700)] 
Merge branch 'mz/empty-rebase-test' into maint

We did not have test to make sure "git rebase" without extra options
filters out an empty commit in the original history.

* mz/empty-rebase-test:
  add test case for rebase of empty commit

12 years agoMerge branch 'js/fast-export-paths-with-spaces' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:00:45 +0000 (13:00 -0700)] 
Merge branch 'js/fast-export-paths-with-spaces' into maint

"git fast-export" produced an input stream for fast-import without
properly quoting pathnames when they contain SPs in them.

* js/fast-export-paths-with-spaces:
  fast-export: quote paths with spaces

12 years agoMerge branch 'cw/no-detaching-an-unborn' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:00:31 +0000 (13:00 -0700)] 
Merge branch 'cw/no-detaching-an-unborn' into maint

"git checkout --detach", when you are still on an unborn branch,
should be forbidden, but it wasn't.

* cw/no-detaching-an-unborn:
  git-checkout: disallow --detach on unborn branch

12 years agoMerge branch 'vr/use-our-perl-in-tests' into maint
Junio C Hamano [Sun, 22 Jul 2012 19:59:56 +0000 (12:59 -0700)] 
Merge branch 'vr/use-our-perl-in-tests' into maint

Some implementations of Perl terminates "lines" with CRLF even when
the script is operating on just a sequence of bytes.  Make sure to
use "$PERL_PATH", the version of Perl the user told Git to use, in
our tests to avoid unnecessary breakages in tests.

* vr/use-our-perl-in-tests:
  t/README: add a bit more Don'ts
  tests: enclose $PERL_PATH in double quotes
  t/test-lib.sh: export PERL_PATH for use in scripts
  t: Replace 'perl' by $PERL_PATH

12 years agoGit 1.7.11.2 v1.7.11.2
Junio C Hamano [Wed, 11 Jul 2012 19:55:38 +0000 (12:55 -0700)] 
Git 1.7.11.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jc/maint-blame-unique-abbrev' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:58:28 +0000 (12:58 -0700)] 
Merge branch 'jc/maint-blame-unique-abbrev' into maint

"git blame" did not try to make sure that the abbreviated commit
object names in its output are unique.

* jc/maint-blame-unique-abbrev:
  blame: compute abbreviation width that ensures uniqueness

12 years agoMerge branch 'rj/platform-pread-may-be-thread-unsafe' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:57:28 +0000 (12:57 -0700)] 
Merge branch 'rj/platform-pread-may-be-thread-unsafe' into maint

On Cygwin, the platform pread(2) is not thread safe, just like our own
compat/ emulation, and cannot be used in the index-pack program.
Makefile variable NO_THREAD_SAFE_PREAD can be defined to avoid use of
this function in a threaded program.

* rj/platform-pread-may-be-thread-unsafe:
  index-pack: Disable threading on cygwin

12 years agoMerge branch 'th/diff-no-index-fixes' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:48:44 +0000 (12:48 -0700)] 
Merge branch 'th/diff-no-index-fixes' into maint

"git diff --no-index" did not correctly handle relative paths and
did not correctly give exit codes when run under "--quiet" option.

* th/diff-no-index-fixes:
  diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes
  diff: handle relative paths in no-index

12 years agoMerge branch 'nd/clone-single-fix' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:48:29 +0000 (12:48 -0700)] 
Merge branch 'nd/clone-single-fix' into maint

"git clone --single-branch" to clone a single branch did not limit
the cloning to the specified branch.

* nd/clone-single-fix:
  clone: fix ref selection in --single-branch --branch=xxx

12 years agoMerge branch 'jc/rev-list-simplify-merges-first-parent' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:46:57 +0000 (12:46 -0700)] 
Merge branch 'jc/rev-list-simplify-merges-first-parent' into maint

When "git log" gets "--simplify-merges/by-decoration" together with
"--first-parent", the combination of these options makes the
simplification logic to use in-core commit objects that haven't been
examined for relevance, either producing incorrect result or taking
too long to produce any output.  Teach the simplification logic to
ignore commits that the first-parent traversal logic ignored when
both are in effect to work around the issue.

* jc/rev-list-simplify-merges-first-parent:
  revision: ignore side parents while running simplify-merges
  revision: note the lack of free() in simplify_merges()
  revision: "simplify" options imply topo-order sort

12 years agoMerge branch 'hv/submodule-update-nuke-submodules' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:46:31 +0000 (12:46 -0700)] 
Merge branch 'hv/submodule-update-nuke-submodules' into maint

"git add" allows adding a regular file to the path where a submodule
used to exist, but "git update-index" did not allow an equivalent
operation to Porcelain writers.

* hv/submodule-update-nuke-submodules:
  update-index: allow overwriting existing submodule index entries

12 years agoMerge branch 'jk/diff-no-index-pager' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:46:21 +0000 (12:46 -0700)] 
Merge branch 'jk/diff-no-index-pager' into maint

"git diff --no-index" did not work with pagers correctly.

* jk/diff-no-index-pager:
  do not run pager with diff --no-index --quiet
  fix pager.diff with diff --no-index

12 years agoMerge branch 'mm/verify-filename-fix' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:45:49 +0000 (12:45 -0700)] 
Merge branch 'mm/verify-filename-fix' into maint

"git diff COPYING HEAD:COPYING" gave a nonsense error message that
claimed that the treeish HEAD did not have COPYING in it.

* mm/verify-filename-fix:
  verify_filename(): ask the caller to chose the kind of diagnosis
  sha1_name: do not trigger detailed diagnosis for file arguments

12 years agoMerge branch 'cn/cherry-pick-range-docs' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:45:34 +0000 (12:45 -0700)] 
Merge branch 'cn/cherry-pick-range-docs' into maint

The documentation for "git cherry-pick A B..C" was misleading.

* cn/cherry-pick-range-docs:
  git-cherry-pick.txt: clarify the use of revision range notation
  Documentation: --no-walk is no-op if range is specified

12 years agoMerge branch 'jc/ustar-checksum-is-unsigned' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:45:07 +0000 (12:45 -0700)] 
Merge branch 'jc/ustar-checksum-is-unsigned' into maint

"git archive" incorrectly computed the header checksum; the symptom
was observed only when using pathnames with hi-bit set.

* jc/ustar-checksum-is-unsigned:
  archive: ustar header checksum is computed unsigned

12 years agoMerge branch 'jc/bundle-complete-notice' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:44:50 +0000 (12:44 -0700)] 
Merge branch 'jc/bundle-complete-notice' into maint

Running "git bundle verify" on a bundle that records a complete
history said "it requires these 0 commits".

* jc/bundle-complete-notice:
  tweak "bundle verify" of a complete history

12 years agoMerge branch 'jc/ls-files-i-dir' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:44:34 +0000 (12:44 -0700)] 
Merge branch 'jc/ls-files-i-dir' into maint

"git ls-files --exclude=t -i" did not consider anything under t/ as
excluded, as it did not pay attention to exclusion of leading paths
while walking the index.  Other two users of excluded() are also
updated.

* jc/ls-files-i-dir:
  dir.c: make excluded() file scope static
  unpack-trees.c: use path_excluded() in check_ok_to_remove()
  builtin/add.c: use path_excluded()
  path_excluded(): update API to less cache-entry centric
  ls-files -i: micro-optimize path_excluded()
  ls-files -i: pay attention to exclusion of leading paths

12 years agoMerge branch 'jc/request-pull-match-tagname' into maint
Junio C Hamano [Wed, 11 Jul 2012 19:43:58 +0000 (12:43 -0700)] 
Merge branch 'jc/request-pull-match-tagname' into maint

"git request-pull $url dev" when the tip of "dev" branch was tagged
with "ext4-for-linus" used the contents from the tag in the output
but still asked the "dev" branch to be pulled, not the tag.

* jc/request-pull-match-tagname:
  request-pull: really favor a matching tag

12 years agocache_name_compare(): do not truncate while comparing paths
Junio C Hamano [Wed, 11 Jul 2012 16:08:28 +0000 (09:08 -0700)] 
cache_name_compare(): do not truncate while comparing paths

We failed to use ce_namelen() equivalent and instead only compared
up to the CE_NAMEMASK bytes by mistake.  Adding an overlong path
that shares the same common prefix as an existing entry in the index
did not add a new entry, but instead replaced the existing one, as
the result.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocommit: fix "--amend --only" with no pathspec
Jeff King [Tue, 10 Jul 2012 20:40:29 +0000 (16:40 -0400)] 
commit: fix "--amend --only" with no pathspec

When we do not have any pathspec, we typically disallow an
explicit "--only", because it makes no sense (your commit
would, by definition, be empty). But since 6a74642
(git-commit --amend: two fixes., 2006-04-20), we have
allowed "--amend --only" with the intent that it would amend
the commit, ignoring any contents staged in the index.

However, while that commit allowed the combination, we never
actually implemented the logic to make it work. The current
code notices that we have no pathspec and assumes we want to
do an as-is commit (i.e., the "--only" is ignored).

Instead, we must make sure to follow the partial-commit
code-path. We also need to tweak the list_paths function to
handle a NULL pathspec.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint' of git://github.com/git-l10n/git-po into maint
Junio C Hamano [Mon, 2 Jul 2012 22:36:52 +0000 (15:36 -0700)] 
Merge branch 'maint' of git://github.com/git-l10n/git-po into maint

Update Swedish translation (1066t0f0u)

12 years agoblame: compute abbreviation width that ensures uniqueness
Junio C Hamano [Mon, 2 Jul 2012 07:54:00 +0000 (00:54 -0700)] 
blame: compute abbreviation width that ensures uniqueness

Julia Lawall noticed that in linux-next repository the commit object
60d5c9f5 (shown with the default abbreviation width baked into "git
blame") in output from

  $ git blame -L 3675,3675 60d5c9f5b -- \
      drivers/staging/brcm80211/brcmfmac/wl_iw.c

is no longer unique in the repository, which results in "short SHA1
60d5c9f5 is ambiguous".

Compute the minimum abbreviation width that ensures uniqueness when
the user did not specify the --abbrev option to avoid this.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate Swedish translation (1066t0f0u)
Peter Krefting [Sun, 1 Jul 2012 22:04:09 +0000 (23:04 +0100)] 
Update Swedish translation (1066t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
12 years agodiff-index.c: "git diff" has no need to read blob from the standard input
Junio C Hamano [Thu, 28 Jun 2012 03:14:47 +0000 (20:14 -0700)] 
diff-index.c: "git diff" has no need to read blob from the standard input

Only "diff --no-index -" does.  Bolting the logic into the low-level
function diff_populate_filespec() was a layering violation from day
one.  Move populate_from_stdin() function out of the generic diff.c
to its only user, diff-index.c.

Also make sure "-" from the command line stays a special token "read
from the standard input", even if we later decide to sanitize the
result from prefix_filename() function in a few obvious ways,
e.g. removing unnecessary "./" prefix, duplicated slashes "//" in
the middle, etc.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodiff-index.c: unify handling of command line paths
Junio C Hamano [Wed, 27 Jun 2012 19:05:52 +0000 (12:05 -0700)] 
diff-index.c: unify handling of command line paths

Regardless of where in the directory hierarchy you are, "-" on the
command line means the standard input.  The old code knew too much
about how the low level machinery uses paths to read from the
working tree and did not bother to have the same check for "-" when
the command is run from the top-level.

Unify the codepaths for subdirectory case and toplevel case into one
and make it clearer.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodiff-index.c: do not pretend paths are pathspecs
Junio C Hamano [Wed, 27 Jun 2012 18:51:15 +0000 (11:51 -0700)] 
diff-index.c: do not pretend paths are pathspecs

"git diff --no-index" takes exactly two paths, not pathspecs, and
has its own way queue_diff() to populate the diff_queue.  Do not
call diff_tree_setup_paths(), pretending as it takes pathspecs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agofast-export: quote paths with spaces
Jay Soffian [Wed, 27 Jun 2012 21:58:01 +0000 (17:58 -0400)] 
fast-export: quote paths with spaces

A path containing a space must be quoted when used as an
argument to either the copy or rename commands (because
unlike other commands, the path is not the final thing on
the line for those commands).

Commit 6280dfdc3b (fast-export: quote paths in output,
2011-08-05) previously attempted to fix fast-export's
quoting by passing all paths through quote_c_style().
However, that function does not consider the space to be a
character which requires quoting, so let's special-case the
space inside print_path(). This will cause space-containing
paths to also be quoted in other commands where such quoting
is not strictly necessary, but it does not hurt to do so.

The test from 6280dfdc3b did not detect this because, while
it does introduce renames in the export stream, it does not
actually turn on rename detection, so they were presented as
pairs of deletions/adds. Using "-M" reveals the bug.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoadd test case for rebase of empty commit
Martin von Zweigbergk [Wed, 27 Jun 2012 16:22:01 +0000 (09:22 -0700)] 
add test case for rebase of empty commit

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoindex-pack: Disable threading on cygwin
Junio C Hamano [Tue, 26 Jun 2012 18:19:32 +0000 (19:19 +0100)] 
index-pack: Disable threading on cygwin

The Cygwin implementation of pread() is not thread-safe since, just
like the emulation provided by compat/pread.c, it uses a sequence of
seek-read-seek calls. In order to avoid failues due to thread-safety
issues, commit b038a61 disables threading when NO_PREAD is defined.
(ie when using the emulation code in compat/pread.c).

We introduce a new build variable, NO_THREAD_SAFE_PREAD, which allows
use to disable the threaded index-pack code on cygwin, in addition to
the above NO_PREAD case.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-checkout: disallow --detach on unborn branch
Chris Webb [Tue, 26 Jun 2012 15:06:42 +0000 (16:06 +0100)] 
git-checkout: disallow --detach on unborn branch

abe199808c (git checkout -b: allow switching out of an unborn branch)
introduced a bug demonstrated by

  git checkout --orphan foo
  git checkout --detach
  git symbolic-ref HEAD

which gives 'refs/heads/(null)'.

This happens because we strbuf_addf(&branch_ref, "refs/heads/%s",
opts->new_branch) when opts->new_branch can be NULL for --detach.

Catch and forbid this case, adding a test to t2017 to catch it in
future.

Signed-off-by: Chris Webb <chris@arachsys.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-submodule.sh: fix filename in comment.
Michał Górny [Mon, 25 Jun 2012 10:56:59 +0000 (12:56 +0200)] 
git-submodule.sh: fix filename in comment.

Signed-off-by: Michał Górny <mgorny@gentoo.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-add--interactive.perl: Remove two unused variables
Thomas Badie [Sun, 24 Jun 2012 21:37:34 +0000 (23:37 +0200)] 
git-add--interactive.perl: Remove two unused variables

The patch 8f0bef6 refactored this script and made the variable $fh
unneeded in subs diff_applies and patch_update_file, but forgot to
remove them.

Signed-off-by: Thomas Badie <badie@lrde.epita.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot/README: add a bit more Don'ts
Junio C Hamano [Tue, 12 Jun 2012 16:44:56 +0000 (09:44 -0700)] 
t/README: add a bit more Don'ts

Add a few more advices that we often have to give to new test
writers.

Also update an example where a double quote pair is used to enclose
a test body to use a single quote pair, which is more readable and
more importantly gives saner semantics for variable substitution.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agotests: enclose $PERL_PATH in double quotes
Junio C Hamano [Tue, 12 Jun 2012 16:49:59 +0000 (09:49 -0700)] 
tests: enclose $PERL_PATH in double quotes

Otherwise it will be split at a space after "Program" when it is set
to "\\Program Files\perl" or something silly like that.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot/test-lib.sh: export PERL_PATH for use in scripts
Junio C Hamano [Mon, 25 Jun 2012 04:42:11 +0000 (21:42 -0700)] 
t/test-lib.sh: export PERL_PATH for use in scripts

Most notably, t4031 creates a small shell script that invokes perl
and we want to use "$PERL_PATH" to name the version of Perl suitable
for our use, read from GIT-BUILD-OPTS.  The test would fail when it
is directly run in t/ directory from the shell or "make" is run in t/
directory.

This problem was hidden from "make test" run in the top-level
directory, because its Makefile exports PERL_PATH.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation: Fix misspellings
Leila Muhtasib [Fri, 22 Jun 2012 20:03:01 +0000 (16:03 -0400)] 
Documentation: Fix misspellings

Signed-off-by: Leila Muhtasib <muhtasib@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoclone: fix ref selection in --single-branch --branch=xxx
Nguyễn Thái Ngọc Duy [Fri, 22 Jun 2012 09:35:47 +0000 (16:35 +0700)] 
clone: fix ref selection in --single-branch --branch=xxx

 - do not fetch HEAD
 - do not also fetch refs following "xxx"

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodiff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes
Tim Henigan [Thu, 21 Jun 2012 18:09:51 +0000 (14:09 -0400)] 
diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes

When running 'git diff --quiet <file1> <file2>', if file1 or file2
is outside the repository, it will exit(0) even if the files differ.
It should exit(1) when they differ.

This happens because 'diff_no_index' looks at the 'found_changes'
member from 'diff_options' to determine if changes were made.  This
is the wrong thing to do, since it is only set if xdiff is actually
run and it finds a change (the diff machinery will optimize out the
xdiff call when it is not necessary) and in that case HAS_CHANGED
flag needs to be taken into account.

Use diff_result_code() that knows all these details for the correct
exit value instead.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodiff: handle relative paths in no-index
Jeff King [Thu, 21 Jun 2012 18:09:50 +0000 (14:09 -0400)] 
diff: handle relative paths in no-index

When diff-no-index is given a relative path to a file outside the
repository, it aborts with error. However, if the file is given
using an absolute path, the diff runs as expected. The two cases
should be treated the same.

Tests and commit message by Tim Henigan.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.11.1 v1.7.11.1
Junio C Hamano [Thu, 21 Jun 2012 20:16:46 +0000 (13:16 -0700)] 
Git 1.7.11.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodocs: always define git-relative-html-prefix attribute
Jeff King [Thu, 21 Jun 2012 06:24:10 +0000 (02:24 -0400)] 
docs: always define git-relative-html-prefix attribute

Commit fe77b41 introduced a new attribute to let the linkgit macro
create cross-directory HTML references from the technical/ and howto/
subdirectories back to the main documentation. We define that attribute
to "../" on the command-line when building inside those subdirectories,
and otherwise leave it unset under the assumption that it would default
to being blank.  Instead, asciidoc omits the link entirely, leading to
broken documentation. Fix this by defining git-relative-html-prefix to
blank in asciidoc.conf (and an instance on the command-line, when
present, will override it).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoshow: fix "range implies walking"
Junio C Hamano [Tue, 19 Jun 2012 21:15:57 +0000 (14:15 -0700)] 
show: fix "range implies walking"

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDemonstrate git-show is broken with ranges
Thomas Rast [Tue, 19 Jun 2012 20:04:57 +0000 (22:04 +0200)] 
Demonstrate git-show is broken with ranges

The logic of git-show has remained largely unchanged since around
5d7eeee (git-show: grok blobs, trees and tags, too, 2006-12-14): start
a revision walker with no_walk=1, look at its pending objects and
handle them one-by-one.  For commits, this means stuffing them into a
new queue all alone, and running the walker.

Then Linus's f222abd (Make 'git show' more useful, 2009-07-13) came
along and set no_walk=0 whenever the user specifies a range.  Which
appears to work fine, until you actually prod it hard enough, as the
preceding commit shows: UNINTERESTING commits will be marked as such,
but not walked further to propagate the marks.

Demonstrate this with the main tests of this patch: 'showing a range
walks (Y shape)'.  The Y shape of history ensures that propagating the
UNINTERESTING marks is necessary to correctly exclude the main1
commit.  The only example I could find actually requires that the
negative revisions are listed later, and in this scenario a dotted
range actually works.  However, it is easy to find examples in git.git
where a dotted range is wrong, e.g.

  $ git show v1.7.0..v1.7.1 | grep ^commit | wc -l
  1297
  $ git rev-list v1.7.0..v1.7.1 | wc -l
  702

While there, also test a few other things that are not covered so far:
the -N way of triggering a range (added in 5853cae, DWIM 'git show -5'
to 'git show --do-walk -5', 2010-06-01), and the interactions of tags,
commits and ranges.

Pointed out by Dr_Memory on #git.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-commit-tree(1): update synopsis
Junio C Hamano [Tue, 19 Jun 2012 18:36:57 +0000 (11:36 -0700)] 
git-commit-tree(1): update synopsis

Even with many new kinds of options, the command still takes the
single <tree> as the first argument.

Probably we would want to update the command to allow it to take
<tree>-ish at the end for consistency.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation: spelling fixes
Miklos Vajna [Tue, 19 Jun 2012 17:56:09 +0000 (19:56 +0200)] 
Documentation: spelling fixes

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoverify_filename(): ask the caller to chose the kind of diagnosis
Matthieu Moy [Mon, 18 Jun 2012 18:18:21 +0000 (20:18 +0200)] 
verify_filename(): ask the caller to chose the kind of diagnosis

verify_filename() can be called in two different contexts. Either we
just tried to interpret a string as an object name, and it fails, so
we try looking for a working tree file (i.e. we finished looking at
revs that come earlier on the command line, and the next argument
must be a pathname), or we _know_ that we are looking for a
pathname, and shouldn't even try interpreting the string as an
object name.

For example, with this change, we get:

  $ git log COPYING HEAD:inexistant
  fatal: HEAD:inexistant: no such path in the working tree.
  Use '-- <path>...' to specify paths that do not exist locally.
  $ git log HEAD:inexistant
  fatal: Path 'inexistant' does not exist in 'HEAD'

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agosha1_name: do not trigger detailed diagnosis for file arguments
Matthieu Moy [Mon, 18 Jun 2012 18:18:20 +0000 (20:18 +0200)] 
sha1_name: do not trigger detailed diagnosis for file arguments

diagnose_invalid_sha1_path() is meant to be called to diagnose a
misspelt <treeish>:<pathname> when <pathname> does not exist in
<treeish>.  However, the code may call it if <treeish>:<pathname> is
invalid (which triggers another call with only_to_die == 1), but for
another reason. This happens when calling e.g.

  git log existing-file HEAD:existing-file

because existing-file is a path and not a revision, the code
verifies that the arguments that follow to be paths.  This leads to
an incorrect message like "existing-file does not exist in HEAD",
even though the path exists in HEAD.

Check that the search for <pathname> in <treeish> fails before
triggering the diagnosis.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.11 v1.7.11
Junio C Hamano [Sun, 17 Jun 2012 21:07:15 +0000 (14:07 -0700)] 
Git 1.7.11

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoSync with 1.7.10.5
Junio C Hamano [Sun, 17 Jun 2012 21:05:53 +0000 (14:05 -0700)] 
Sync with 1.7.10.5

12 years agoGit 1.7.10.5 v1.7.10.5
Junio C Hamano [Sun, 17 Jun 2012 21:04:15 +0000 (14:04 -0700)] 
Git 1.7.10.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDo not autosquash in case of an implied interactive rebase
Vincent van Ravesteijn [Thu, 24 May 2012 13:57:26 +0000 (13:57 +0000)] 
Do not autosquash in case of an implied interactive rebase

The option to autosquash is only used in case of an interactive rebase.
When merges are preserved, rebase uses an interactive rebase internally,
but in this case autosquash should still be disabled.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'js/maint-fast-export-mark-error' into maint
Junio C Hamano [Sun, 17 Jun 2012 21:00:03 +0000 (14:00 -0700)] 
Merge branch 'js/maint-fast-export-mark-error' into maint

"git fast-export" did not give a readable error message when the same
mark erroneously appeared twice in the --import-marks input.

12 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Fri, 15 Jun 2012 22:01:16 +0000 (15:01 -0700)] 
Merge git://github.com/git-l10n/git-po

Updated Italian translations.

* git://github.com/git-l10n/git-po:
  l10n: it.po: translate 212 new messages

12 years agoMerge branch 'as/diff-shortstat-ignore-binary'
Junio C Hamano [Fri, 15 Jun 2012 22:00:53 +0000 (15:00 -0700)] 
Merge branch 'as/diff-shortstat-ignore-binary'

# By Alexander Strasser
* as/diff-shortstat-ignore-binary:
  diff: Only count lines in show_shortstats

12 years agodiff: Only count lines in show_shortstats
Alexander Strasser [Fri, 15 Jun 2012 21:50:30 +0000 (23:50 +0200)] 
diff: Only count lines in show_shortstats

Do not mix byte and line counts. Binary files have byte counts;
skip them when accumulating line insertions/deletions.

The regression was introduced in e18872b.

Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodo not run pager with diff --no-index --quiet
Jeff King [Fri, 15 Jun 2012 20:32:55 +0000 (16:32 -0400)] 
do not run pager with diff --no-index --quiet

There is no point in running a pager when --quiet is given,
since we are producing no output. The regular diff code path
handles this already, because --quiet implies --exit-code,
and we check for --exit-code when deciding not to run the
pager.

However, the "quiet implies exit-code" logic is done in
diff_setup_done, and the no-index code path sets up its
pager before running diff_setup_done, and misses this case.

We can fix this by reordering our initialization.
Currently we do:

  1. read command line arguments into diff_options

  2. Set pager if EXIT_CODE not requested

  3. always set EXIT_CODE, since we are emulating
     traditional diff

  4. call diff_setup_done

We can fix the problem by moving pager initialization (step
2) after step 4. But step 3 must come after step 2 (since we
want to know whether the _user_ requested --exit-code, not
whether we turned it on unconditionally). So we must move
both.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agofix pager.diff with diff --no-index
Jeff King [Fri, 15 Jun 2012 20:29:48 +0000 (16:29 -0400)] 
fix pager.diff with diff --no-index

git-diff does not rely on the git wrapper to setup its
pager; instead, it sets it up on its own after seeing
whether --quiet or --exit-code has been specified.  After
diff_no_index was split off from cmd_diff, commit b3fde6c
(git diff --no-index: default to page like other diff
frontends, 2008-05-26) duplicated the one-liner from
cmd_diff to turn on the pager.

Later, commit 8f0359f (Allow pager of diff command be
enabled/disabled, 2008-07-21) taught the the version in
cmd_diff to respect the pager.diff config, but the version
in diff_no_index was left behind. This meant that

  git -c pager.diff=0 diff a b

would not use a pager, but

  git -c pager.diff=0 diff --no-index a b

would.  Let's fix it by factoring out a common function.

While we're there, let's update the antiquated comment,
which claims that the pager interferes with propagating the
exit code; this has not been the case since ea27a18 (spawn
pager via run_command interface, 2008-07-22).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoperl/Makefile: install Git::SVN::* when NO_PERL_MAKEMAKER=yes, too
Jonathan Nieder [Fri, 15 Jun 2012 18:05:05 +0000 (13:05 -0500)] 
perl/Makefile: install Git::SVN::* when NO_PERL_MAKEMAKER=yes, too

v1.7.11-rc1~12^2~2 (2012-05-27) and friends split some git-svn code
into separate modules but did not update the fallback rules to install
them when NO_PERL_MAKEMAKER is set.  Add the appropriate rules so
users without MakeMaker can use git-svn again.

Affected modules: Git::SVN::Prompt, Git::SVN::Fetcher,
Git::SVN::Editor, Git::SVN::Ra, Git::SVN::Memoize::YAML.

Reported-by: Adam Roben <adam@roben.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmali.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoperl/Makefile.PL: warn about duplicate module list in perl/Makefile
Jonathan Nieder [Fri, 15 Jun 2012 18:14:46 +0000 (13:14 -0500)] 
perl/Makefile.PL: warn about duplicate module list in perl/Makefile

Adding or removing a module requires modifying both files to support
builds with and without MakeMaker.  Add a comment to remind patch
authors and reviewers at the crucial moment.

Longer term, it would be nicer to maintain a single list, perhaps in a
separate file used by both build systems.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-cherry-pick.txt: clarify the use of revision range notation
Carlos Martín Nieto [Fri, 15 Jun 2012 14:33:16 +0000 (16:33 +0200)] 
git-cherry-pick.txt: clarify the use of revision range notation

When given a set of commits, cherry-pick will apply the changes for
all of them. Specifying a simple range will also work as expected.

This can lead the user to think that

    git cherry-pick A B..C

may apply A and then B..C, but that is not what happens.

Instead the revs are given to a single invocation of rev-list, which
will consider A and C as positive revs and B as a negative one.  The
commit A will not be used if it is an ancestor of B.

Add a note about this and add an example with this particular
syntax, which has shown up on the list a few times.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation: --no-walk is no-op if range is specified
Carlos Martín Nieto [Fri, 15 Jun 2012 14:33:15 +0000 (16:33 +0200)] 
Documentation: --no-walk is no-op if range is specified

The existing description can be misleading and cause the reader to
think that --no-walk will do something if they specify a range in the
command line instead of a set of revs.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: it.po: translate 212 new messages
Marco Paolone [Thu, 14 Jun 2012 12:14:31 +0000 (14:14 +0200)] 
l10n: it.po: translate 212 new messages

Signed-off-by: Marco Paolone <marcopaolone@gmail.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agorevision: ignore side parents while running simplify-merges
Junio C Hamano [Fri, 8 Jun 2012 21:56:03 +0000 (14:56 -0700)] 
revision: ignore side parents while running simplify-merges

The simplify_merges() function needs to look at all history chain to
find the closest ancestor that is relevant after the simplification,
but after --first-parent traversal, side parents haven't been marked
for relevance (they are irrelevant by definition due to the nature
of first-parent-only traversal) nor culled from the parents list of
resulting commits.

We cannot simply remove these side parents from the parents list, as
the output phase still wants to see the parents.  Instead, teach
simplify_one() and its callees to ignore the later parents.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'rj/gitweb-test-sans-date-parser'
Junio C Hamano [Wed, 13 Jun 2012 18:48:54 +0000 (11:48 -0700)] 
Merge branch 'rj/gitweb-test-sans-date-parser'

Regression fix to t9501 introduced at 0f3ddd4

* rj/gitweb-test-sans-date-parser:
  gitweb: Skip 'modification times' tests when no date parser available

12 years agoMerge branch 'fc/git-complete-helper-fix'
Junio C Hamano [Wed, 13 Jun 2012 18:47:11 +0000 (11:47 -0700)] 
Merge branch 'fc/git-complete-helper-fix'

* fc/git-complete-helper-fix:
  completion: put main git and gitk completion functions back into git namespace

12 years agoarchive: ustar header checksum is computed unsigned
Junio C Hamano [Wed, 13 Jun 2012 17:42:25 +0000 (10:42 -0700)] 
archive: ustar header checksum is computed unsigned

POSIX.1 (pax) is pretty clear on this:

  The chksum field shall be the ISO/IEC 646:1991 standard IRV
  representation of the octal value of the simple sum of all octets
  in the header logical record. Each octet in the header shall be
  treated as an unsigned value. These values shall be added to an
  unsigned integer, initialized to zero, the precision of which is
  not less than 17 bits. When calculating the checksum, the chksum
  field is treated as if it were all <space> characters.

so is GNU:

  http://www.gnu.org/software/tar/manual/html_node/Checksumming.html

Found by 7zip folks and reported by Rafał Mużyło.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocompletion: remove credential helpers from porcelain commands
SZEDER Gábor [Wed, 13 Jun 2012 08:11:29 +0000 (10:11 +0200)] 
completion: remove credential helpers from porcelain commands

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocompletion: put main git and gitk completion functions back into git namespace
SZEDER Gábor [Wed, 13 Jun 2012 08:08:50 +0000 (10:08 +0200)] 
completion: put main git and gitk completion functions back into git namespace

Commit 7f02f3d7 (completion: rename internal helpers _git and _gitk,
2012-05-19) renamed said functions to _main_git() and _main_gitk(),
respectively.  By convention the name of our git-completion-specific
functions start with '_git' or '__git' prefix, so rename those
functions once again to put them back into our "namespace".  Use the
two underscore prefix, because _git_main() could be mistaken for the
completion function of the (not yet existing) 'git main' command.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogitweb: Skip 'modification times' tests when no date parser available
Ramsay Jones [Tue, 12 Jun 2012 18:09:38 +0000 (19:09 +0100)] 
gitweb: Skip 'modification times' tests when no date parser available

The If-Modified-Since support in Gitweb is conditional on the
availability of a date parser from either the HTTP::Date or
Time::ParseDate modules. If a suitable parser is not available,
then the corresponding 'modification times' tests should be skipped.

Introduce the DATE_PARSER test prerequisite and use it to skip
all of the dependent tests.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot: Replace 'perl' by $PERL_PATH
Vincent van Ravesteijn [Mon, 11 Jun 2012 19:01:53 +0000 (19:01 +0000)] 
t: Replace 'perl' by $PERL_PATH

GIT-BUILD-OPTIONS defines PERL_PATH to be used in the test suite. Only a
few tests already actually use this variable when perl is needed. The
other test just call 'perl' and it might happen that the wrong perl
interpreter is used.

This becomes problematic on Windows, when the perl interpreter that is
compiled and installed on the Windows system is used, because this perl
interpreter might introduce some unexpected LF->CRLF conversions.

This patch makes sure that $PERL_PATH is used everywhere in the test suite
and that the correct perl interpreter is used.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.11-rc3 v1.7.11-rc3
Junio C Hamano [Tue, 12 Jun 2012 16:10:52 +0000 (09:10 -0700)] 
Git 1.7.11-rc3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Tue, 12 Jun 2012 16:08:35 +0000 (09:08 -0700)] 
Merge git://github.com/git-l10n/git-po

Updates to German, Vietnamese and simplified Chinese translation.

* git://github.com/git-l10n/git-po:
  l10n: de.po: translate 27 new messages
  l10n: Update  po/vi.po to v1.7.11.rc2.2.gb694fbb
  l10n: zh_CN.po: translate 27 new messages
  l10n: Update git.pot (27 new, 1 removed messages)

12 years agoMerge git://github.com/ralfth/git-po-de
Jiang Xin [Tue, 12 Jun 2012 15:41:05 +0000 (23:41 +0800)] 
Merge git://github.com/ralfth/git-po-de

By Ralf Thielow
via Ralf Thielow
* github.com/ralfth/git-po-de:
  l10n: de.po: translate 27 new messages

12 years agoMerge branch 'mm/api-credentials-doc'
Junio C Hamano [Tue, 12 Jun 2012 15:40:16 +0000 (08:40 -0700)] 
Merge branch 'mm/api-credentials-doc'

* mm/api-credentials-doc:
  api-credential.txt: document that helpers field is filled-in automatically

12 years agoMerge branch 'jc/fmt-merge-msg-people'
Junio C Hamano [Tue, 12 Jun 2012 15:33:30 +0000 (08:33 -0700)] 
Merge branch 'jc/fmt-merge-msg-people'

Tone down the lines that credit people involved and make them
comments, so that integrators who edit their merge messages can
still make use of the information, but lazy ones will not leave
the unverified guesses placed on the "via" line.

* jc/fmt-merge-msg-people:
  fmt-merge-msg: make attribution into comment lines

12 years agoapi-credential.txt: document that helpers field is filled-in automatically
Matthieu Moy [Mon, 11 Jun 2012 17:51:47 +0000 (19:51 +0200)] 
api-credential.txt: document that helpers field is filled-in automatically

It was unclear whether the field was to be specified by the user of the
API.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'js/maint-fast-export-mark-error'
Junio C Hamano [Tue, 12 Jun 2012 14:27:50 +0000 (07:27 -0700)] 
Merge branch 'js/maint-fast-export-mark-error'

* js/maint-fast-export-mark-error:
  fast-export: report SHA-1 instead of gibberish when marks exist already

12 years agofast-export: report SHA-1 instead of gibberish when marks exist already
Johannes Schindelin [Tue, 12 Jun 2012 13:45:16 +0000 (15:45 +0200)] 
fast-export: report SHA-1 instead of gibberish when marks exist already

Cc: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Max Horn <max@quendi.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: de.po: translate 27 new messages
Ralf Thielow [Fri, 8 Jun 2012 17:15:10 +0000 (19:15 +0200)] 
l10n: de.po: translate 27 new messages

Translate 27 new messages came from git.pot update
in 7256fd7 (l10n: Update git.pot (27 new, 1 removed messages)).

Signed-off-by: Ralf Thielow <ralf.thielow@googlemail.com>
12 years agoupdate-index: allow overwriting existing submodule index entries
Heiko Voigt [Sat, 9 Jun 2012 14:27:00 +0000 (16:27 +0200)] 
update-index: allow overwriting existing submodule index entries

In commit e01105 Linus introduced gitlinks to update-index. He explains
that he thinks it is not the right thing to replace a gitlink with
something else.

That commit is from the very first beginnings of submodule support.
Since then we have gotten a lot closer to being able to remove a
submodule without losing its history. This check prevents such a use
case, so I think this assumption has changed.

Additionally in the git add codepath we do not have such a check, so for
consistency reasons I think removing this check is the correct thing to
do.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-svn: use YAML format for mergeinfo cache when possible
Jonathan Nieder [Sat, 9 Jun 2012 22:35:35 +0000 (17:35 -0500)] 
git-svn: use YAML format for mergeinfo cache when possible

Since v1.7.0-rc2~11 (git-svn: persistent memoization, 2010-01-30),
git-svn has maintained some private per-repository caches in
.git/svn/.caches to avoid refetching and recalculating some
mergeinfo-related information with every "git svn fetch".

These caches use the 'nstore' format from the perl core module
Storable, which can be read and written quickly and was designed for
transfer over the wire (the 'n' stands for 'network').  This format is
endianness-independent and independent of floating-point
representation.

Unfortunately the format is *not* independent of the perl version ---
new perl versions will write files that very old perl cannot read.
Worse, the format is not independent of the size of a perl integer.
So if you toggle perl's use64bitint compile-time option, then using
'git svn fetch' on your old repositories produces errors like this:

Byte order is not compatible at ../../lib/Storable.pm (autosplit
into ../../lib/auto/Storable/_retrieve.al) line 380, at
/usr/share/perl/5.12/Memoize/Storable.pm line 21

That is, upgrading perl to a version that uses use64bitint for the
first time makes git-svn suddenly refuse to fetch in existing
repositories.  Removing .git/svn/.caches lets git-svn recover.

It's time to switch to a platform independent serializer backend with
better compatibility guarantees.  This patch uses YAML::Any.

Other choices were considered:

 - thawing data from Data::Dumper involves "eval".  Doing that without
   creating a security risk is fussy.

 - the JSON API works on scalars in memory and doesn't provide a
   standard way to serialize straight to disk.

YAML::Any is reasonably fast and has a pleasant API.  In most
backends, LoadFile() reads the entire file into a scalar anyway and
converts it as a second step, but having an interface that allows the
deserialization to happen on the fly without a temporary is still a
comfort.

YAML::Any is not a core perl module, so we take care to use it when
and only when it is available.  Installations without that module
should fall back to using Storable with all its quirks, keeping their
cache files in

.git/svn/.caches/*.db

Installations with YAML peacefully coexist by keeping a separate set
of cache files in

.git/svn/.caches/*.yaml.

In most cases, switching between is a one-time thing, so it doesn't
seem worth the complication to migrate existing caches.

The upshot: after this patch, as long as YAML::Any is installed you
can move your git repository between machines with different perl
installations and "git svn fetch" will work fine.  If you do not have
YAML::Any, the behavior is unchanged (and in particular does not get
any worse).

Reported-by: Sandro Weiser <sandro.weiser@informatik.tu-chemnitz.de>
Reported-by: Bdale Garbee <bdale@gag.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
12 years agogit-svn: make Git::SVN::RA a separate file
Jonathan Nieder [Sat, 9 Jun 2012 22:28:10 +0000 (17:28 -0500)] 
git-svn: make Git::SVN::RA a separate file

This slices off another 600 or so lines from the frighteningly long
git-svn.perl script.

The Git::SVN::Ra interface is similar enough to SVN::Ra that it is
probably safe to ignore most of its implementation on first reading.
(Documenting or moving functions that do not fit that pattern is left
as an exercise to the interested reader.)

[ew: rebased and fixed conflict against
 commit c26ddce86d7215b4d9687bd4c6b5dd43a3fabf31
 (git-svn: platform auth providers are working only on 1.6.15 or newer)]

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
12 years agogit-svn: make Git::SVN::Editor a separate file
Jonathan Nieder [Sat, 9 Jun 2012 22:25:56 +0000 (17:25 -0500)] 
git-svn: make Git::SVN::Editor a separate file

This makes the git-svn script shorter and less scary for beginners to
read through for the first time.  Take the opportunity to explain the
purpose and basic interface of the Git::SVN::Editor class while at it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
12 years agol10n: Update po/vi.po to v1.7.11.rc2.2.gb694fbb
Tran Ngoc Quan [Sat, 9 Jun 2012 07:14:03 +0000 (14:14 +0700)] 
l10n: Update  po/vi.po to v1.7.11.rc2.2.gb694fbb

 * Translated 28 strings.

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
12 years agorevision: note the lack of free() in simplify_merges()
Junio C Hamano [Fri, 8 Jun 2012 21:50:22 +0000 (14:50 -0700)] 
revision: note the lack of free() in simplify_merges()

Among the three similar-looking loops that walk singly linked
commit_list, the first one is only peeking and the same list is
later used for real work.  Leave a comment not to mistakenly
free its elements there.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agorevision: "simplify" options imply topo-order sort
Junio C Hamano [Fri, 8 Jun 2012 21:47:08 +0000 (14:47 -0700)] 
revision: "simplify" options imply topo-order sort

The code internally runs sort_in_topo_order() already; it is more clear
to spell it out in the option parsing phase, instead of adding a special
case in simplify_merges() function.

12 years agoMerge branch 'mm/api-credentials-doc'
Junio C Hamano [Fri, 8 Jun 2012 15:32:19 +0000 (08:32 -0700)] 
Merge branch 'mm/api-credentials-doc'

Finishing touches...

* mm/api-credentials-doc:
  docs: fix cross-directory linkgit references

12 years agodocs: fix cross-directory linkgit references
Jeff King [Thu, 7 Jun 2012 21:03:23 +0000 (23:03 +0200)] 
docs: fix cross-directory linkgit references

Most of our documentation is in a single directory, so using
linkgit:git-config[1] just generates a relative link in the
same directory. However, this is not the case with the API
documentation in technical/*, which need to refer to
git-config from the parent directory.

We can fix this by passing a special prefix attribute when building
in a subdirectory, and respecting that prefix in our linkgit
definitions.

We only have to modify the html linkgit definition.  For
manpages, we can ignore this for two reasons:

  1. we do not generate actual links to the file in
     manpages, but instead just give the name and section of
     the linked manpage

  2. we do not currently build manpages for subdirectories,
     only html

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: zh_CN.po: translate 27 new messages
Jiang Xin [Fri, 8 Jun 2012 04:07:25 +0000 (12:07 +0800)] 
l10n: zh_CN.po: translate 27 new messages

Translate 19 new and 8 fuzzy messages which are marked by shell gettext
wrappers, and ignored by previous 'git.pot' updates.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agol10n: Update git.pot (27 new, 1 removed messages)
Jiang Xin [Fri, 8 Jun 2012 02:40:20 +0000 (10:40 +0800)] 
l10n: Update git.pot (27 new, 1 removed messages)

Extract messages marked by shell gettext wrappers which are ignored
before. See:

 * http://thread.gmane.org/gmane.comp.version-control.git/199112

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agoGit 1.7.11-rc2 v1.7.11-rc2
Junio C Hamano [Thu, 7 Jun 2012 16:14:41 +0000 (09:14 -0700)] 
Git 1.7.11-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'mm/api-credentials-doc'
Junio C Hamano [Thu, 7 Jun 2012 16:07:35 +0000 (09:07 -0700)] 
Merge branch 'mm/api-credentials-doc'

* mm/api-credentials-doc:
  api-credentials.txt: add "see also" section
  api-credentials.txt: mention credential.helper explicitly
  api-credentials.txt: show the big picture first
  doc: fix xref link from api docs to manual pages

12 years agoMerge branch 'rr/maint-t3510-cascade-fix'
Junio C Hamano [Thu, 7 Jun 2012 16:07:27 +0000 (09:07 -0700)] 
Merge branch 'rr/maint-t3510-cascade-fix'

* rr/maint-t3510-cascade-fix:
  t3510 (cherry-pick-sequence): add missing '&&'

12 years agoMerge branch 'jc/svn-auth-providers-unusable-at-1.6.12'
Junio C Hamano [Thu, 7 Jun 2012 16:07:08 +0000 (09:07 -0700)] 
Merge branch 'jc/svn-auth-providers-unusable-at-1.6.12'

Regression fix for people with libsvn between 1.6.12 and 1.6.15, on
which we tried to use the non-working platform auth providers.

* jc/svn-auth-providers-unusable-at-1.6.12:
  git-svn: platform auth providers are working only on 1.6.15 or newer

12 years agoMerge branch 'cr/persistent-https'
Junio C Hamano [Thu, 7 Jun 2012 16:06:39 +0000 (09:06 -0700)] 
Merge branch 'cr/persistent-https'

A remote helper that acts as a proxy and caches ssl session for the
https:// transport is added to the contrib/ area.

By Colby Ranger
* cr/persistent-https:
  Add persistent-https to contrib

12 years agofmt-merge-msg: make attribution into comment lines
Junio C Hamano [Wed, 6 Jun 2012 21:24:28 +0000 (14:24 -0700)] 
fmt-merge-msg: make attribution into comment lines

The submaintainer credit is not something you can compute purely by
looking at the history and its shape, especially in the presense of
fast-forward merges, and this observation makes the information on
the "via" line unreliable.  Let's leave the final determination of
credits up to whoever is making the merge and show them as comments.

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