git.git
11 years agol10n: de.po: improve hint for autocorrected command execution
Ralf Thielow [Fri, 25 Apr 2014 20:16:43 +0000 (22:16 +0200)]
l10n: de.po: improve hint for autocorrected command execution

Signed-off-by: Ralf Thielow <redacted>
11 years agol10n: de.po: translate 45 new messages
Ralf Thielow [Tue, 1 Apr 2014 18:25:20 +0000 (20:25 +0200)]
l10n: de.po: translate 45 new messages

Translate 45 new messages came from git.pot update in 5e078fc
(l10n: git.pot: v2.0.0 round 1 (45 new, 28 removed)).

Signed-off-by: Ralf Thielow <redacted>
Acked-by: Thomas Rast <redacted>
11 years agol10n: de.po: correct translation of "completed" after resolving deltas
Ralf Thielow [Sat, 12 Apr 2014 19:39:10 +0000 (21:39 +0200)]
l10n: de.po: correct translation of "completed" after resolving deltas

Signed-off-by: Ralf Thielow <redacted>
11 years agopager: do allow spawning pager recursively
Jörn Engel [Mon, 21 Apr 2014 20:46:22 +0000 (16:46 -0400)]
pager: do allow spawning pager recursively

This reverts commit 88e8f908f2b0c56f9ccf8134d8ff9f689af9cc84, which
tried to allow

    GIT_PAGER="git -p column --mode='dense color'" git -p branch

and still wanted to avoid "git -p column" to invoke itself.  However,
this falls into "don't do that -p then" category.

In particular, inside "git log", with results going through less, a
potentially interesting commit may be found and from there inside
"less", the user may want to execute "git show <commit>".  Before
the commit being reverted, this used to show the patch in less but
it no longer does.

Signed-off-by: Jörn Engel <redacted>
Reviewed-by: Jeff King <redacted>
Reviewed-by: Matthieu Moy <redacted>
Acked-by: Duy Nguyen <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoMerge branch 'db/make-with-curl'
Junio C Hamano [Mon, 28 Apr 2014 22:48:12 +0000 (15:48 -0700)]
Merge branch 'db/make-with-curl'

It turns out that some platforms do ship without curl-config even
though they build with the hardcoded default -lcurl and rely on it
to work.

* db/make-with-curl:
  Makefile: default to -lcurl when no CURL_CONFIG or CURLDIR

11 years agoMerge branch 'jk/external-diff-use-argv-array' (early part)
Junio C Hamano [Mon, 28 Apr 2014 22:47:35 +0000 (15:47 -0700)]
Merge branch 'jk/external-diff-use-argv-array' (early part)

Crash fix for codepath that miscounted the necessary size for an
array when spawning an external diff program.

* 'jk/external-diff-use-argv-array' (early part):
  run_external_diff: use an argv_array for the command line

11 years agoblame: large-scale performance rewrite
David Kastrup [Fri, 25 Apr 2014 23:56:49 +0000 (01:56 +0200)]
blame: large-scale performance rewrite

The previous implementation used a single sorted linear list of blame
entries for organizing all partial or completed work.  Every subtask had
to scan the whole list, with most entries not being relevant to the
task.  The resulting run-time was quadratic to the number of separate
chunks.

This change gives every subtask its own data to work with.  Subtasks are
organized into "struct origin" chains hanging off particular commits.
Commits are organized into a priority queue, processing them in commit
date order in order to keep most of the work affecting a particular blob
collated even in the presence of an extensive merge history.

For large files with a diversified history, a speedup by a factor of 3
or more is not unusual.

Signed-off-by: David Kastrup <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoMakefile: default to -lcurl when no CURL_CONFIG or CURLDIR
Dave Borowitz [Mon, 28 Apr 2014 21:01:23 +0000 (14:01 -0700)]
Makefile: default to -lcurl when no CURL_CONFIG or CURLDIR

The original implementation of CURL_CONFIG support did not match the
original behavior of using -lcurl when CURLDIR was not set. This broke
implementations that were lacking curl-config but did have libcurl
installed along system libraries, such as MSysGit. In other words, the
assumption that curl-config is always installed was incorrect.

Instead, if CURL_CONFIG is empty or returns an empty result (e.g. due
to curl-config being missing), use the old behavior of falling back to
-lcurl.

Signed-off-by: Dave Borowitz <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agocommit: do not complain of empty messages from -C
Jeff King [Fri, 25 Apr 2014 23:11:15 +0000 (19:11 -0400)]
commit: do not complain of empty messages from -C

When we pick another commit's message, we die() immediately
if we find that it's empty and we are not going to run an
editor (i.e., when running "-C" instead of "-c").  However,
this check is redundant and harmful.

It's redundant because we will already notice the empty
message later, after we would have run the editor, and die
there (just as we would for a regular, not "-C" case, where
the user provided an empty message in the editor).

It's harmful for a few reasons:

  1. It does not respect --allow-empty-message. As a result,
     a "git rebase -i" cannot "pick" such a commit. So you
     cannot even go back in time to fix it with a "reword"
     or "edit" instruction.

  2. It does not take into account other ways besides the
     editor to modify the message. For example, "git commit
     -C empty-commit -m foo" could take the author
     information from empty-commit, but add a message to it.
     There's more to do to make that work correctly (and
     right now we explicitly forbid "-C with -m"), but this
     removes one roadblock.

  3. The existing check is not enough to prevent segfaults.
     We try to find the "\n\n" header/body boundary in the
     commit. If it is at the end of the string (i.e., no
     body), _or_ if we cannot find it at all (i.e., a
     truncated commit object), we consider the message
     empty. With "-C", that's OK; we die in either case. But
     with "-c", we continue on, and in the case of a
     truncated commit may end up dereferencing NULL+2.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoGit 2.0-rc1
Junio C Hamano [Fri, 25 Apr 2014 17:03:41 +0000 (10:03 -0700)]
Git 2.0-rc1

Signed-off-by: Junio C Hamano <redacted>
11 years agogit tag --contains: avoid stack overflow
Jean-Jacques Lafay [Thu, 24 Apr 2014 12:24:39 +0000 (14:24 +0200)]
git tag --contains: avoid stack overflow

In large repos, the recursion implementation of contains(commit,
commit_list) may result in a stack overflow. Replace the recursion with
a loop to fix it.

This problem is more apparent on Windows than on Linux, where the stack
is more limited by default.

See also this thread on the msysGit list:

https://groups.google.com/d/topic/msysgit/FqT6boJrb2g/discussion

[jes: re-written to imitate the original recursion more closely]

Thomas Braun pointed out several documentation shortcomings.

Tests are run only if ulimit -s is available.  This means they cannot
be run on Windows.

Signed-off-by: Jean-Jacques Lafay <redacted>
Signed-off-by: Johannes Schindelin <redacted>
Tested-by: Stepan Kasal <redacted>
Reviewed-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agosetup: fix windows path buffer over-stepping
Martin Erik Werner [Thu, 24 Apr 2014 13:06:09 +0000 (15:06 +0200)]
setup: fix windows path buffer over-stepping

Fix a buffer over-stepping issue triggered by providing an absolute path
that is similar to the work tree path.

abspath_part_inside_repo() may currently increment the path pointer by
offset_1st_component() + wtlen, which is too much, since
offset_1st_component() is a subset of wtlen.

For the *nix-style prefix '/', this does (by luck) not cause any issues,
since offset_1st_component() is 1 and there will always be a '/' or '\0'
that can "absorb" this.

In the case of DOS-style prefixes though, the offset_1st_component() is
3 and this can potentially over-step the string buffer. For example if

    work_tree = "c:/r"
    path      = "c:/rl"

Then wtlen is 4, and incrementing the path pointer by (3 + 4) would
end up 2 bytes outside a string buffer of length 6.

Similarly if

    work_tree = "c:/r"
    path      = "c:/rl/d/a"

Then (since the loop starts by also incrementing the pointer one step),
this would mean that the function would miss checking if "c:/rl/d" could
be the work_tree, arguably this is unlikely though, since it would only
be possible with symlinks on windows.

Fix this by simply avoiding to increment by offset_1st_component() and
wtlen at the same time.

Signed-off-by: Martin Erik Werner <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoMerge branch 'jk/pack-bitmap'
Junio C Hamano [Thu, 24 Apr 2014 19:31:50 +0000 (12:31 -0700)]
Merge branch 'jk/pack-bitmap'

A last minute (and hopefully the last) fix to avoid coredumps due
to an incorrect pointer arithmetic.

* jk/pack-bitmap:
  ewah_bitmap.c: do not assume size_t and eword_t are the same size

11 years agoMerge branch 'fc/transport-helper-sync-error-fix'
Junio C Hamano [Thu, 24 Apr 2014 19:31:34 +0000 (12:31 -0700)]
Merge branch 'fc/transport-helper-sync-error-fix'

Make sure the marks are not written out when the transport helper
did not finish happily, to avoid leaving a marks file that is out of
sync with the reality.

* fc/transport-helper-sync-error-fix:
  t5801 (remote-helpers): cleanup environment sets
  transport-helper: fix sync issue on crashes
  transport-helper: trivial cleanup
  transport-helper: propagate recvline() error pushing
  remote-helpers: make recvline return an error
  transport-helper: remove barely used xchgline()

11 years agoMerge branch 'db/make-with-curl'
Junio C Hamano [Thu, 24 Apr 2014 19:31:27 +0000 (12:31 -0700)]
Merge branch 'db/make-with-curl'

Ask curl-config how to link with the curl library, instead of
having only a limited configurability knobs in the Makefile.

* db/make-with-curl:
  Makefile: allow static linking against libcurl
  Makefile: use curl-config to determine curl flags

11 years agomergetool: document the default for --[no-]prompt
Junio C Hamano [Wed, 23 Apr 2014 17:07:20 +0000 (10:07 -0700)]
mergetool: document the default for --[no-]prompt

The original motivation of using the prompt was to confirm to run a
tool on this particular (as opposed to another) path, but the user
can also take the prompt as to confirm to run this (as opposed to
some other) tool.  The latter of which of course is irritating for
those who told which exact tool to use, which is the reason why we
are flipping the default.

During the review discussion of the patch, many people (including
the maintainer) missed that a user can find the prompt useful way to
skip running the tool on particular paths.  Clarify it by adding a
brief half-sentence to the description.

Signed-off-by: Junio C Hamano <redacted>
11 years agogit-remote-mediawiki: fix encoding issue for UTF-8 media files
Matthieu Moy [Wed, 23 Apr 2014 14:34:29 +0000 (16:34 +0200)]
git-remote-mediawiki: fix encoding issue for UTF-8 media files

When a media file contains valid UTF-8, git-remote-mediawiki tried to be
too clever about the encoding, and the call to utf8::downgrade() on the
downloaded content was failing with

  Wide character in subroutine entry at git-remote-mediawiki line 583.

Instead, use $response->decode() to apply decoding linked to the
Content-Encoding: header, and return the content without attempting any
charset decoding.

Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-remote-mediawiki: allow stop/start-ing the test server
Matthieu Moy [Wed, 23 Apr 2014 14:34:28 +0000 (16:34 +0200)]
git-remote-mediawiki: allow stop/start-ing the test server

Previously, the user had to launch a complete re-install after a lighttpd
stop (e.g. a reboot).

Signed-off-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agop5302-pack-index.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:44:06 +0000 (06:44 -0700)]
p5302-pack-index.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agolib-gpg.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:44:05 +0000 (06:44 -0700)]
lib-gpg.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agolib-cvs.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:44:04 +0000 (06:44 -0700)]
lib-cvs.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agolib-credential.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:44:03 +0000 (06:44 -0700)]
lib-credential.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-web--browse.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:44:02 +0000 (06:44 -0700)]
git-web--browse.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-stash.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:44:01 +0000 (06:44 -0700)]
git-stash.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-rebase.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:44:00 +0000 (06:44 -0700)]
git-rebase.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-rebase--merge.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:43:59 +0000 (06:43 -0700)]
git-rebase--merge.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-pull.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:43:58 +0000 (06:43 -0700)]
git-pull.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoappp.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:43:56 +0000 (06:43 -0700)]
appp.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agot7900-subtree.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:43:55 +0000 (06:43 -0700)]
t7900-subtree.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agotest-gitmw-lib.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:43:54 +0000 (06:43 -0700)]
test-gitmw-lib.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agot9365-continuing-queries.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 23 Apr 2014 13:43:53 +0000 (06:43 -0700)]
t9365-continuing-queries.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agot9117: use --prefix "" instead of --prefix=""
Kyle J. McKay [Tue, 22 Apr 2014 11:16:22 +0000 (04:16 -0700)]
t9117: use --prefix "" instead of --prefix=""

Versions of Perl's Getopt::Long module before 2.37 do not contain
this fix that first appeared in Getopt::Long version 2.37:

* Bugfix: With gnu_compat, --foo= will no longer trigger "Option
  requires an argument" but return the empty string.

Instead of using --prefix="" use --prefix "" when testing an
explictly empty prefix string in order to work with older versions
of Perl's Getopt::Long module.

Also add a paragraph on this workaround to the documentation of
git-svn itself.

Signed-off-by: Kyle J. McKay <redacted>
Acked-by: Johan Herland <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agosend-email: windows drive prefix (e.g. C:) appears only at the beginning
Junio C Hamano [Wed, 23 Apr 2014 16:37:38 +0000 (09:37 -0700)]
send-email: windows drive prefix (e.g. C:) appears only at the beginning

Tighten the regexp used in the "file_name_is_absolute" replacement
used on msys to declare that only "[a-zA-Z]:" that appear at the
very beginning is a path with a drive-prefix.

Signed-off-by: Junio C Hamano <redacted>
11 years agoblame: dynamic blame_date_width for different locales
Jiang Xin [Tue, 22 Apr 2014 14:39:10 +0000 (22:39 +0800)]
blame: dynamic blame_date_width for different locales

When show date in relative date format for git-blame, the max display
width of datetime is set as the length of the string "Thu Oct 19
16:00:04 2006 -0700" (30 characters long).  But actually the max width
for C locale is only 22 (the length of string "x years, xx months ago").
And for other locale, it maybe smaller.  E.g. For Chinese locale, only
needs a half (16-character width).

Set blame_date_width as the display width of _("4 years, 11 months
ago"), so that translators can make the choice.

Helped-by: Junio C Hamano <redacted>
Signed-off-by: Jiang Xin <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoblame: fix broken time_buf paddings in relative timestamp
Jiang Xin [Mon, 21 Apr 2014 06:02:03 +0000 (14:02 +0800)]
blame: fix broken time_buf paddings in relative timestamp

Command `git blame --date relative` aligns the date field with a
fixed-width (defined by blame_date_width), and if time_str is shorter
than that, it adds spaces for padding.  But there are two bugs in the
following codes:

        time_len = strlen(time_str);
        ...
        memset(time_buf + time_len, ' ', blame_date_width - time_len);

 1. The type of blame_date_width is size_t, which is unsigned.  If
    time_len is greater than blame_date_width, the result of
    "blame_date_width - time_len" will never be a negative number, but a
    really big positive number, and will cause memory overwrite.

    This bug can be triggered if either l10n message for function
    show_date_relative() in date.c is longer than 30 characters, then
    `git blame --date relative` may exit abnormally.

 2. When show blame information with relative time, the UTF-8 characters
    in time_str will break the alignment of columns after the date field.
    This is because the time_buf padding with spaces should have a
    constant display width, not a fixed strlen size.  So we should call
    utf8_strwidth() instead of strlen() for width calibration.

Helped-by: Nguyễn Thái Ngọc Duy <redacted>
Helped-by: Eric Sunshine <redacted>
Signed-off-by: Jiang Xin <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agol10n: zh_CN.po: translate 46 new messages (2229t0f0u)
Jiang Xin [Thu, 13 Mar 2014 04:41:34 +0000 (12:41 +0800)]
l10n: zh_CN.po: translate 46 new messages (2229t0f0u)

Translations for git v2.0.0-rc0.  Also correct translatioins on relative
date in date.c with help from Brian Gesiak ($gmane/246390).

Signed-off-by: Jiang Xin <redacted>
11 years agoMerge branch 'fr-po' of git://github.com/jnavila/git
Jiang Xin [Wed, 23 Apr 2014 04:33:47 +0000 (12:33 +0800)]
Merge branch 'fr-po' of git://github.com/jnavila/git

* 'fr-po' of git://github.com/jnavila/git:
  l10n: fr translation for v2.0.0rc0 (2228t)

11 years agoewah_bitmap.c: do not assume size_t and eword_t are the same size
Kyle J. McKay [Tue, 22 Apr 2014 22:53:02 +0000 (15:53 -0700)]
ewah_bitmap.c: do not assume size_t and eword_t are the same size

When buffer_grow changes the size of the buffer using realloc,
it first computes and saves the rlw pointer's offset into the
buffer using (uint8_t *) math before the realloc but then
restores it using (eword_t *) math.

In order to do this it's necessary to convert the (uint8_t *)
offset into an (eword_t *) offset.  It was doing this by
dividing by the sizeof(size_t).  Unfortunately sizeof(size_t)
is not same as sizeof(eword_t) on all platforms.

This causes illegal memory accesses and other bad things to
happen when attempting to use bitmaps on those platforms.

Fix this by dividing by the sizeof(eword_t) instead which
will always be correct for all platforms.

Signed-off-by: Kyle J. McKay <redacted>
Acked-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agomerge: enable defaulttoupstream by default
Felipe Contreras [Mon, 21 Apr 2014 00:17:33 +0000 (19:17 -0500)]
merge: enable defaulttoupstream by default

There's no point in this:

% git merge
fatal: No commit specified and merge.defaultToUpstream not set.

We know the most likely scenario is that the user wants to merge the
upstream, and if not, he can set merge.defaultToUpstream to false.

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agomergetool: run prompt only if guessed tool
Felipe Contreras [Mon, 21 Apr 2014 00:17:34 +0000 (19:17 -0500)]
mergetool: run prompt only if guessed tool

It's annoying to see the prompt:

  Hit return to start merge resolution tool (foo):

Every time the user does 'git mergetool' even if the user already
configured 'foo' as the wanted tool.

Display this prompt only when the user hasn't explicitly configured a
tool.

Signed-off-by: Felipe Contreras <redacted>
Acked-by: David Aguilar <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agomergetools: add vimdiff3 mode
Felipe Contreras [Mon, 21 Apr 2014 00:24:20 +0000 (19:24 -0500)]
mergetools: add vimdiff3 mode

It's similar to the default, except that the other windows are hidden.
This ensures that removed/added colors are still visible on the main
merge window, but the other windows not visible.

Specially useful with merge.conflictstyle=diff3.

Signed-off-by: Felipe Contreras <redacted>
Acked-by: David Aguilar <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agol10n: fr translation for v2.0.0rc0 (2228t)
Jean-Noel Avila [Wed, 26 Feb 2014 20:27:14 +0000 (21:27 +0100)]
l10n: fr translation for v2.0.0rc0 (2228t)

Signed-off-by: Jean-Noel Avila <redacted>
Signed-off-by: Matthieu Baerts <redacted>
Signed-off-by: Xavier Mehrenberger <redacted>
11 years agogit-prompt.sh: don't put unsanitized branch names in $PS1
Richard Hansen [Mon, 21 Apr 2014 23:53:09 +0000 (19:53 -0400)]
git-prompt.sh: don't put unsanitized branch names in $PS1

Both bash and zsh subject the value of PS1 to parameter expansion,
command substitution, and arithmetic expansion.  Rather than include
the raw, unescaped branch name in PS1 when running in two- or
three-argument mode, construct PS1 to reference a variable that holds
the branch name.  Because the shells do not recursively expand, this
avoids arbitrary code execution by specially-crafted branch names such
as '$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)'.

Signed-off-by: Richard Hansen <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit.c: treat RUN_SETUP_GENTLY and RUN_SETUP as mutually exclusive
Luis R. Rodriguez [Tue, 22 Apr 2014 00:47:56 +0000 (17:47 -0700)]
git.c: treat RUN_SETUP_GENTLY and RUN_SETUP as mutually exclusive

This saves us a few branches when RUN_SETUP is set up.

Signed-off-by: Luis R. Rodriguez <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agol10n: Update Swedish translation (2228t0f0u)
Peter Krefting [Tue, 22 Apr 2014 09:26:02 +0000 (10:26 +0100)]
l10n: Update Swedish translation (2228t0f0u)

Signed-off-by: Peter Krefting <redacted>
11 years agoUpdate draft release notes to 2.0
Junio C Hamano [Mon, 21 Apr 2014 18:54:29 +0000 (11:54 -0700)]
Update draft release notes to 2.0

Signed-off-by: Junio C Hamano <redacted>
11 years agotransport-helper: remove unnecessary strbuf resets
Felipe Contreras [Sun, 20 Apr 2014 18:59:30 +0000 (13:59 -0500)]
transport-helper: remove unnecessary strbuf resets

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agotransport-helper: add support to delete branches
Felipe Contreras [Sun, 20 Apr 2014 18:59:29 +0000 (13:59 -0500)]
transport-helper: add support to delete branches

For remote-helpers that use 'export' to push.

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agofast-export: add support to delete refs
Felipe Contreras [Sun, 20 Apr 2014 18:59:28 +0000 (13:59 -0500)]
fast-export: add support to delete refs

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agofast-import: add support to delete refs
Felipe Contreras [Sun, 20 Apr 2014 18:59:27 +0000 (13:59 -0500)]
fast-import: add support to delete refs

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agotransport-helper: add support to push symbolic refs
Felipe Contreras [Sun, 20 Apr 2014 18:59:26 +0000 (13:59 -0500)]
transport-helper: add support to push symbolic refs

For example 'HEAD'.

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agotransport-helper: add support for old:new refspec
Felipe Contreras [Sun, 20 Apr 2014 18:59:25 +0000 (13:59 -0500)]
transport-helper: add support for old:new refspec

By using fast-export's new --refspec option.

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agofast-export: add new --refspec option
Felipe Contreras [Sun, 20 Apr 2014 18:59:24 +0000 (13:59 -0500)]
fast-export: add new --refspec option

So that we can convert the exported ref names.

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agofast-export: improve argument parsing
Felipe Contreras [Sun, 20 Apr 2014 18:59:23 +0000 (13:59 -0500)]
fast-export: improve argument parsing

We don't want to pass arguments specific to fast-export to
setup_revisions.

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoMerge git://bogomips.org/git-svn
Junio C Hamano [Mon, 21 Apr 2014 17:53:09 +0000 (10:53 -0700)]
Merge git://bogomips.org/git-svn

* git://bogomips.org/git-svn:
  Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given

11 years agoMerge branch 'jx/i18n'
Junio C Hamano [Mon, 21 Apr 2014 17:42:52 +0000 (10:42 -0700)]
Merge branch 'jx/i18n'

* jx/i18n:
  i18n: mention "TRANSLATORS:" marker in Documentation/CodingGuidelines
  i18n: only extract comments marked with "TRANSLATORS:"
  i18n: remove obsolete comments for translators in diffstat generation
  i18n: fix uncatchable comments for translators in date.c

11 years agoMerge branch 'km/avoid-non-function-return-in-rebase'
Junio C Hamano [Mon, 21 Apr 2014 17:42:45 +0000 (10:42 -0700)]
Merge branch 'km/avoid-non-function-return-in-rebase'

Work around /bin/sh that does not like "return" at the top-level
of a file that is dot-sourced from inside a function definition.

* km/avoid-non-function-return-in-rebase:
  Revert "rebase: fix run_specific_rebase's use of "return" on FreeBSD"
  rebase: avoid non-function use of "return" on FreeBSD

11 years agoMerge branch 'ep/shell-command-substitution'
Junio C Hamano [Mon, 21 Apr 2014 17:42:41 +0000 (10:42 -0700)]
Merge branch 'ep/shell-command-substitution'

* ep/shell-command-substitution:
  t9362-mw-to-git-utf8.sh: use the $( ... ) construct for command substitution
  t9360-mw-to-git-clone.sh: use the $( ... ) construct for command substitution
  git-tag.sh: use the $( ... ) construct for command substitution
  git-revert.sh: use the $( ... ) construct for command substitution
  git-resolve.sh: use the $( ... ) construct for command substitution
  git-repack.sh: use the $( ... ) construct for command substitution
  git-merge.sh: use the $( ... ) construct for command substitution
  git-ls-remote.sh: use the $( ... ) construct for command substitution
  git-fetch.sh: use the $( ... ) construct for command substitution
  git-commit.sh: use the $( ... ) construct for command substitution
  git-clone.sh: use the $( ... ) construct for command substitution
  git-checkout.sh: use the $( ... ) construct for command substitution
  install-webdoc.sh: use the $( ... ) construct for command substitution
  howto-index.sh: use the $( ... ) construct for command substitution

11 years agot5801 (remote-helpers): cleanup environment sets
Felipe Contreras [Sun, 20 Apr 2014 18:43:37 +0000 (13:43 -0500)]
t5801 (remote-helpers): cleanup environment sets

Commit 512477b (tests: use "env" to run commands with temporary env-var
settings) missed some variables in the remote-helpers test. Also
standardize these.

Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoDocumentation: git-gui: describe gui.displayuntracked
Max Kirillov [Sat, 19 Apr 2014 21:47:14 +0000 (00:47 +0300)]
Documentation: git-gui: describe gui.displayuntracked

Signed-off-by: Max Kirillov <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agorun_external_diff: refactor cmdline setup logic
Jeff King [Sat, 19 Apr 2014 19:22:25 +0000 (15:22 -0400)]
run_external_diff: refactor cmdline setup logic

The current logic makes it hard to see what gets put onto
the command line in which cases. Pulling out a helper
function lets us see that we have two sets of file data, and
the second set either uses the original name, or the "other"
renamed/copy name.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agorun_external_diff: hoist common bits out of conditional
Jeff King [Sat, 19 Apr 2014 19:20:46 +0000 (15:20 -0400)]
run_external_diff: hoist common bits out of conditional

Whether we have diff_filespecs to give to the diff command
or not, we always are going to run the program and pass it
the pathname. Let's pull that duplicated part out of the
conditional to make it more obvious.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agorun_external_diff: drop fflush(NULL)
Jeff King [Sat, 19 Apr 2014 19:19:30 +0000 (15:19 -0400)]
run_external_diff: drop fflush(NULL)

This fflush was added in d5535ec (Use run_command() to spawn
external diff programs instead of fork/exec., 2007-10-19),
because flushing buffers before forking is a good habit.

But later, 7d0b18a (Add output flushing before fork(),
2008-08-04) added it to the generic run-command interface,
meaning that our flush here is redundant.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agorun_external_diff: clean up error handling
Jeff King [Sat, 19 Apr 2014 19:19:19 +0000 (15:19 -0400)]
run_external_diff: clean up error handling

When the external diff reports an error, we try to clean up
and die. However, we can make this process a bit simpler:

  1. We do not need to bother freeing memory, since we are
     about to exit.  Nor do we need to clean up our
     tempfiles, since the atexit() handler will do it for
     us. So we can die as soon as we see the error.

  3. We can just call die() rather than fprintf/exit. This
     does technically change our exit code, but the exit
     code of "1" is not meaningful here. In fact, it is
     probably wrong, since "1" from diff usually means
     "completed successfully, but there were differences".

And while we're there, we can mark the error message for
translation, and drop the full stop at the end to make it
more like our other messages.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agorun_external_diff: use an argv_array for the environment
Jeff King [Sat, 19 Apr 2014 19:17:25 +0000 (15:17 -0400)]
run_external_diff: use an argv_array for the environment

We currently use static buffers and a static array for
formatting the environment passed to the external diff.
There's nothing wrong in the code, but it is much easier to
verify that it is correct if we use a dynamic argv_array.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agorun_external_diff: use an argv_array for the command line
Jeff King [Sat, 19 Apr 2014 19:17:06 +0000 (15:17 -0400)]
run_external_diff: use an argv_array for the command line

We currently generate the command-line for the external
command using a fixed-length array of size 10. But if there
is a rename, we actually need 11 elements (10 items, plus a
NULL), and end up writing a random NULL onto the stack.

Rather than bump the limit, let's just use an argv_array, which
makes this sort of error impossible.

Noticed-by: Max L <redacted>
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agol10n: vi.po (2228t): Update and minor fix
Tran Ngoc Quan [Sun, 20 Apr 2014 08:22:26 +0000 (15:22 +0700)]
l10n: vi.po (2228t): Update and minor fix

Signed-off-by: Tran Ngoc Quan <redacted>
11 years agoGit 2.0: git svn: Set default --prefix='origin/' if --prefix is not given
Johan Herland [Fri, 11 Oct 2013 12:57:07 +0000 (14:57 +0200)]
Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given

git-svn by default puts its Subversion-tracking refs directly in
refs/remotes/*. This runs counter to Git's convention of using
refs/remotes/$remote/* for storing remote-tracking branches.

Furthermore, combining git-svn with regular git remotes run the risk of
clobbering refs under refs/remotes (e.g. if you have a git remote
called "tags" with a "v1" branch, it will overlap with the git-svn's
tracking branch for the "v1" tag from Subversion.

Even though the git-svn refs stored in refs/remotes/* are not "proper"
remote-tracking branches (since they are not covered by a proper git
remote's refspec), they clearly represent a similar concept, and would
benefit from following the same convention.

For example, if git-svn tracks Subversion branch "foo" at
refs/remotes/foo, and you create a local branch refs/heads/foo to add
some commits to be pushed back to Subversion (using "git svn dcommit),
then it is clearly unhelpful of Git to throw

  warning: refname 'foo' is ambiguous.

every time you checkout, rebase, or otherwise interact with the branch.

The existing workaround for this is to supply the --prefix=quux/ to
git svn init/clone, so that git-svn's tracking branches end up in
refs/remotes/quux/* instead of refs/remotes/*. However, encouraging
users to specify --prefix to work around a design flaw in git-svn is
suboptimal, and not a long term solution to the problem. Instead,
git-svn should default to use a non-empty prefix that saves
unsuspecting users from the inconveniences described above.

This patch will only affect newly created git-svn setups, as the
--prefix option only applies to git svn init (and git svn clone).
Existing git-svn setups will continue with their existing (lack of)
prefix. Also, if anyone somehow prefers git-svn's old layout, they
can recreate that by explicitly passing an empty prefix (--prefix "")
on the git svn init/clone command line.

The patch changes the default value for --prefix from "" to "origin/",
updates the git-svn manual page, and fixes the fallout in the git-svn
testcases.

(Note that this patch might be easier to review using the --word-diff
and --word-diff-regex=. diff options.)

[ew: squashed description of <= 1.9 behavior into manpage]

Suggested-by: Thomas Ferris Nicolaisen <redacted>
Signed-off-by: Johan Herland <redacted>
Signed-off-by: Eric Wong <redacted>
11 years agol10n: git.pot: v2.0.0 round 1 (45 new, 28 removed)
Jiang Xin [Sat, 19 Apr 2014 04:53:28 +0000 (12:53 +0800)]
l10n: git.pot: v2.0.0 round 1 (45 new, 28 removed)

Generate po/git.pot from v2.0.0-rc0 for git v2.0.0 l10n round 1.

Signed-off-by: Jiang Xin <redacted>
11 years agoGit 2.0-rc0
Junio C Hamano [Fri, 18 Apr 2014 18:21:43 +0000 (11:21 -0700)]
Git 2.0-rc0

An early-preview for the upcoming Git 2.0.

Signed-off-by: Junio C Hamano <redacted>
11 years agoMerge branch 'jk/config-die-bad-number-noreturn'
Junio C Hamano [Fri, 18 Apr 2014 18:17:44 +0000 (11:17 -0700)]
Merge branch 'jk/config-die-bad-number-noreturn'

Squelch a false compiler warning from older gcc.

* jk/config-die-bad-number-noreturn:
  config.c: mark die_bad_number as NORETURN

11 years agoMerge branch 'fc/remote-helper-fixes'
Junio C Hamano [Fri, 18 Apr 2014 18:17:40 +0000 (11:17 -0700)]
Merge branch 'fc/remote-helper-fixes'

* fc/remote-helper-fixes:
  remote-bzr: trivial test fix
  remote-bzr: include authors field in pushed commits
  remote-bzr: add support for older versions
  remote-hg: always normalize paths
  remote-helpers: allow all tests running from any dir

11 years agoMerge branch 'fc/complete-aliased-push'
Junio C Hamano [Fri, 18 Apr 2014 18:17:36 +0000 (11:17 -0700)]
Merge branch 'fc/complete-aliased-push'

* fc/complete-aliased-push:
  completion: fix completing args of aliased "push", "fetch", etc.

11 years agoMerge branch 'fc/prompt-zsh-read-from-file'
Junio C Hamano [Fri, 18 Apr 2014 18:17:22 +0000 (11:17 -0700)]
Merge branch 'fc/prompt-zsh-read-from-file'

* fc/prompt-zsh-read-from-file:
  prompt: fix missing file errors in zsh

11 years agoi18n: mention "TRANSLATORS:" marker in Documentation/CodingGuidelines
Junio C Hamano [Fri, 18 Apr 2014 17:48:08 +0000 (10:48 -0700)]
i18n: mention "TRANSLATORS:" marker in Documentation/CodingGuidelines

These comments have to have "TRANSLATORS: " at the very beginning
and have to deviate from the usual multi-line comment formatting
convention.

Signed-off-by: Junio C Hamano <redacted>
11 years agocommit.c: check for lock error and return early
Ronnie Sahlberg [Wed, 16 Apr 2014 18:56:53 +0000 (11:56 -0700)]
commit.c: check for lock error and return early

Move the check for the lock failure to happen immediately after
lock_any_ref_for_update().  Previously the lock and the
check-if-lock-failed was separated by a handful of string
manipulation statements.

Moving the check to occur immediately after the failed lock makes
the code slightly easier to read and makes it follow the pattern of

 try-to-take-a-lock();
 if (check-if-lock-failed) {
    error();
 }

Signed-off-by: Ronnie Sahlberg <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agosequencer.c: check for lock failure and bail early in fast_forward_to
Ronnie Sahlberg [Wed, 16 Apr 2014 18:56:52 +0000 (11:56 -0700)]
sequencer.c: check for lock failure and bail early in fast_forward_to

Change fast_forward_to() to check if locking the ref failed, print a
nice error message and bail out early.

The old code did not check if ref_lock was NULL and relied on the
fact that the write_ref_sha1() would safely detect this condition
and set the return variable ret to indicate an error.

While that is safe, it makes the code harder to read for two reasons:

 * Inconsistency.  Almost all other places we do check the lock for
   NULL explicitly, so the naive reader is confused "why don't we
   check here?"

 * And relying on write_ref_sha1() to detect and return an error for
   when a previous lock_any_ref_for_update() failed feels obfuscated.

This change should not change any functionality or logic aside from
adding an extra error message when this condition is triggered
(write_ref_sha1() returns an error silently for this condition).

Signed-off-by: Ronnie Sahlberg <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agot9362-mw-to-git-utf8.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:58 +0000 (10:29 -0700)]
t9362-mw-to-git-utf8.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agot9360-mw-to-git-clone.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:57 +0000 (10:29 -0700)]
t9360-mw-to-git-clone.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-tag.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:56 +0000 (10:29 -0700)]
git-tag.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-revert.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:55 +0000 (10:29 -0700)]
git-revert.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-resolve.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:54 +0000 (10:29 -0700)]
git-resolve.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-repack.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:53 +0000 (10:29 -0700)]
git-repack.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-merge.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:52 +0000 (10:29 -0700)]
git-merge.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-ls-remote.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:51 +0000 (10:29 -0700)]
git-ls-remote.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-fetch.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:50 +0000 (10:29 -0700)]
git-fetch.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-commit.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:49 +0000 (10:29 -0700)]
git-commit.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-clone.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:48 +0000 (10:29 -0700)]
git-clone.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agogit-checkout.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:47 +0000 (10:29 -0700)]
git-checkout.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoinstall-webdoc.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:46 +0000 (10:29 -0700)]
install-webdoc.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agohowto-index.sh: use the $( ... ) construct for command substitution
Elia Pinto [Wed, 16 Apr 2014 17:29:45 +0000 (10:29 -0700)]
howto-index.sh: use the $( ... ) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
   sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <redacted>
Reviewed-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoi18n: only extract comments marked with "TRANSLATORS:"
Jiang Xin [Thu, 17 Apr 2014 05:37:18 +0000 (13:37 +0800)]
i18n: only extract comments marked with "TRANSLATORS:"

When extract l10n messages, we use "--add-comments" option to keep
comments right above the l10n messages for references.  But sometimes
irrelevant comments are also extracted.  For example in the following
code block, the comment in line 2 will be extracted as comment for the
l10n message in line 3, but obviously it's wrong.

        { OPTION_CALLBACK, 0, "ignore-removal", &addremove_explicit,
          NULL /* takes no arguments */,
          N_("ignore paths removed in the working tree (same as
          --no-all)"),
          PARSE_OPT_NOARG, ignore_removal_cb },

Since almost all comments for l10n translators are marked with the same
prefix (tag): "TRANSLATORS:", it's safe to only extract comments with
this special tag.  I.E. it's better to call xgettext as:

        xgettext --add-comments=TRANSLATORS: ...

Also tweaks the multi-line comment in "init-db.c", to make it start with
the proper tag, not "* TRANSLATORS:" (which has a star before the tag).

Signed-off-by: Jiang Xin <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoi18n: remove obsolete comments for translators in diffstat generation
Jiang Xin [Thu, 17 Apr 2014 05:37:19 +0000 (13:37 +0800)]
i18n: remove obsolete comments for translators in diffstat generation

Since we do not translate diffstat any more, remove the obsolete comments.

Signed-off-by: Jiang Xin <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoi18n: fix uncatchable comments for translators in date.c
Jiang Xin [Thu, 17 Apr 2014 05:37:17 +0000 (13:37 +0800)]
i18n: fix uncatchable comments for translators in date.c

Comment for l10n translators can not be extracted by xgettext if it
is not right above the l10n tag.  Moving the comment right before
the l10n tag will fix this issue.

Reported-by: Brian Gesiak <redacted>
Signed-off-by: Jiang Xin <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoSVN.pm::parse_svn_date: allow timestamps with a single-digit hour
RomanBelinsky [Tue, 11 Feb 2014 16:23:02 +0000 (18:23 +0200)]
SVN.pm::parse_svn_date: allow timestamps with a single-digit hour

Some broken subversion server gives timestamps with only one digit
in the hour part, like this:

    2014-01-07T5:01:02.048176Z

Loosen the regexp that expected to see two-digit hour, minute and
second parts to accept a single-digit hour (but not minute or
second).

Signed-off-by: Stepan Kasal <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoRevert "rebase: fix run_specific_rebase's use of "return" on FreeBSD"
Kyle J. McKay [Fri, 11 Apr 2014 08:28:18 +0000 (01:28 -0700)]
Revert "rebase: fix run_specific_rebase's use of "return" on FreeBSD"

This reverts commit 99855ddf4bd319cd06a0524e755ab1c1b7d39f3b.

The workaround 99855ddf introduced to deal with problematic
"return" statements in scripts run by "dot" commands located
inside functions only handles one part of the problem.  The
issue has now been addressed by not using "return" statements
in this way in the git-rebase--*.sh scripts.

This workaround is therefore no longer necessary, so clean
up the code by reverting it.

Signed-off-by: Kyle J. McKay <redacted>
Acked-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agorebase: avoid non-function use of "return" on FreeBSD
Kyle J. McKay [Fri, 11 Apr 2014 08:28:17 +0000 (01:28 -0700)]
rebase: avoid non-function use of "return" on FreeBSD

Since a1549e1015d4bf2e and 01a1e646 (first appearing in v1.8.4)
the git-rebase--*.sh scripts have used a "return" to stop execution
of the dot-sourced file and return to the "dot" command that
dot-sourced it.  The /bin/sh utility on FreeBSD however behaves
poorly under some circumstances when such a "return" is executed.

In particular, if the "dot" command is contained within a function,
then when a "return" is executed by the script it runs (that is not
itself inside a function), control will return from the function
that contains the "dot" command skipping any statements that might
follow the dot command inside that function.  Commit 99855ddf (first
appearing in v1.8.4.1) addresses this by making the "dot" command
the last line in the function.

Unfortunately the FreeBSD /bin/sh may also execute some statements
in the script run by the "dot" command that appear after the
troublesome "return".  The fix in 99855ddf does not address this
problem.

For example, if you have script1.sh with these contents:

run_script2() {
        . "$(dirname -- "$0")/script2.sh"
        _e=$?
        echo only this line should show
        [ $_e -eq 5 ] || echo expected status 5 got $_e
        return 3
}
run_script2
e=$?
[ $e -eq 3 ] || { echo expected status 3 got $e; exit 1; }

And script2.sh with these contents:

if [ 5 -gt 3 ]; then
        return 5
fi
case bad in *)
        echo always shows
esac
echo should not get here
! :

When running script1.sh (e.g. '/bin/sh script1.sh' or './script1.sh'
after making it executable), the expected output from a POSIX shell
is simply the single line:

only this line should show

However, when run using FreeBSD's /bin/sh, the following output
appears instead:

should not get here
expected status 3 got 1

Not only did the lines following the "dot" command in the run_script2
function in script1.sh get skipped, but additional lines in script2.sh
following the "return" got executed -- but not all of them (e.g. the
"echo always shows" line did not run).

These issues can be avoided by not using a top-level "return" in
script2.sh.  If script2.sh is changed to this:

main() {
        if [ 5 -gt 3 ]; then
                return 5
        fi
        case bad in *)
                echo always shows
        esac
        echo should not get here
        ! :
}
main

Then it behaves the same when using FreeBSD's /bin/sh as when using
other more POSIX compliant /bin/sh implementations.

We fix the git-rebase--*.sh scripts in a similar fashion by moving
the top-level code that contains "return" statements into its own
function and then calling that as the last line in the script.

Signed-off-by: Kyle J. McKay <redacted>
Acked-by: Matthieu Moy <redacted>
Signed-off-by: Junio C Hamano <redacted>
11 years agoUpdate draft release notes for 2.0
Junio C Hamano [Wed, 16 Apr 2014 20:43:26 +0000 (13:43 -0700)]
Update draft release notes for 2.0

Signed-off-by: Junio C Hamano <redacted>
11 years agoMerge branch 'mh/multimail'
Junio C Hamano [Wed, 16 Apr 2014 20:39:00 +0000 (13:39 -0700)]
Merge branch 'mh/multimail'

* mh/multimail:
  git-multimail: update to version 1.0.0

11 years agoMerge branch 'tb/unicode-6.3-zero-width'
Junio C Hamano [Wed, 16 Apr 2014 20:38:57 +0000 (13:38 -0700)]
Merge branch 'tb/unicode-6.3-zero-width'

Teach our display-column-counting logic about decomposed umlauts
and friends.

* tb/unicode-6.3-zero-width:
  utf8.c: partially update to version 6.3

git clone https://git.99rst.org/PROJECT