git.git
12 years agocoloured git-prompt: paint detached HEAD marker in red
Junio C Hamano [Wed, 17 Oct 2012 07:44:25 +0000 (00:44 -0700)]
coloured git-prompt: paint detached HEAD marker in red

Paint the marker for normal state in green and detached state
in red, instead of the other way around.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agomaybe_flush_or_die: move a too-loose Windows specific error
Johannes Sixt [Wed, 17 Oct 2012 07:05:51 +0000 (09:05 +0200)]
maybe_flush_or_die: move a too-loose Windows specific error

 check to compat

Commit b2f5e268 (Windows: Work around an oddity when a pipe with no reader
is written to) introduced a check for EINVAL after fflush() to fight
spurious "Invalid argument" errors on Windows when a pipe was broken. But
this check may hide real errors on systems that do not have the this odd
behavior. Introduce an fflush wrapper in compat/mingw.* so that the treatment
is only applied on Windows.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-cvsimport: allow author-specific timezones
Chris Rorvick [Wed, 17 Oct 2012 03:53:29 +0000 (22:53 -0500)]
git-cvsimport: allow author-specific timezones

CVS patchsets are imported with timestamps having an offset of +0000
(UTC).  The cvs-authors file is already used to translate the CVS
username to full name and email in the corresponding commit.  Extend
this file to support an optional timezone for calculating a user-
specific timestamp offset.

Signed-off-by: Chris Rorvick <chris@rorvick.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'master' of https://github.com/nafmo/git-l10n-sv
Jiang Xin [Wed, 17 Oct 2012 01:38:30 +0000 (09:38 +0800)]
Merge branch 'master' of https://github.com/nafmo/git-l10n-sv

* 'master' of https://github.com/nafmo/git-l10n-sv:
  l10n: Update Swedish translation (1964t0f0u)

12 years agoMerge branch 'master' of git://github.com/vnwildman/git
Jiang Xin [Wed, 17 Oct 2012 01:37:30 +0000 (09:37 +0800)]
Merge branch 'master' of git://github.com/vnwildman/git

* 'master' of git://github.com/vnwildman/git:
  l10n: vi.po: update from v1.8.0-rc2-4-g42e55

12 years agol10n: vi.po: update from v1.8.0-rc2-4-g42e55
Tran Ngoc Quan [Wed, 17 Oct 2012 01:15:28 +0000 (08:15 +0700)]
l10n: vi.po: update from v1.8.0-rc2-4-g42e55

* translate 3 new messages
* review quotes

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
12 years agocvsserver Documentation: new cvs ... -r support
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:33 +0000 (23:42 -0600)]
cvsserver Documentation: new cvs ... -r support

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: add t9402 to test branch and tag refs
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:32 +0000 (23:42 -0600)]
cvsserver: add t9402 to test branch and tag refs

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: support -r and sticky tags for most operations
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:31 +0000 (23:42 -0600)]
cvsserver: support -r and sticky tags for most operations

  - Split off prepDirForOutput for "update" and "commit".
    Some low level protocol details were changed to more closely
    resemble CVS even in non-tagged cases.  Hopefully it still works
    with finicky clients like Eclipse.
  - Substantial changes to "diff".  The output is now closer to
    standard CVS (including exit status), and can be used as
    a patch, but there are still a number of differences compared
    to CVS.
  - Tweaks to "add", "remove", "status", and "commit".
  - FUTURE: CVS revision numbers for branches simply encode git
    commit IDs in a way that resembles CVS revision numbers,
    dropping all normal CVS structural relations between different
    revision numbers.
  - FUTURE: "log" doesn't try to work properly at all with branches
    and tags.
  - FUTURE: "annotate" probably doesn't work with branches or
    tags either (untested)?

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: Add version awareness to argsfromdir
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:30 +0000 (23:42 -0600)]
cvsserver: Add version awareness to argsfromdir

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: generalize getmeta() to recognize commit refs
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:29 +0000 (23:42 -0600)]
cvsserver: generalize getmeta() to recognize commit refs

This allows getmeta() to recognize any commitish (sha1,
tag/branch name, etc).

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: implement req_Sticky and related utilities
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:28 +0000 (23:42 -0600)]
cvsserver: implement req_Sticky and related utilities

Nothing sets sticky yet, or uses the values set by this, but soon...

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: add misc commit lookup, file meta data, and file listing functions
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:27 +0000 (23:42 -0600)]
cvsserver: add misc commit lookup, file meta data, and file listing functions

These will be used soon, but not yet.

PERFORMANCE NOTE: getMetaFromCommithash() does not scale well as currently
implemented.  See comment for possible optimization strategies.
Fortunately, it will only be used in cases that would not have worked
at all before this change.

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: define a tag name character escape mechanism
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:26 +0000 (23:42 -0600)]
cvsserver: define a tag name character escape mechanism

CVS tags are officially only allowed to use [-_0-9A-Za-f].  Git
refs commonly uses other characters, especially [./].  Such characters
need to be escaped from CVS in order to be referenced.

This just defines functions to escape/unescape names.  The functions
are not used yet.

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: cleanup extra slashes in filename arguments
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:25 +0000 (23:42 -0600)]
cvsserver: cleanup extra slashes in filename arguments

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: factor out git-log parsing logic
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:24 +0000 (23:42 -0600)]
cvsserver: factor out git-log parsing logic

Some field conversion was already duplicated, and more calls will
be added soon.

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver status: provide real sticky info
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:23 +0000 (23:42 -0600)]
cvsserver status: provide real sticky info

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: cvs add: do not expand directory arguments
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:22 +0000 (23:42 -0600)]
cvsserver: cvs add: do not expand directory arguments

Standard "cvs add" never does any recursion.  With standard
cvs, "cvs add dir" will either add just the "dir" to
the repository, or error out.  Prior to this change, git-cvsserver
would try to recurse (perhaps re-adding sandbox-removed files?) into
the existing directory instead.

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: use whole CVS rev number in-process; don't strip "1." prefix
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:21 +0000 (23:42 -0600)]
cvsserver: use whole CVS rev number in-process; don't strip "1." prefix

Keep track of the whole CVS revision number in-process.  This will
clarify code when we start handling non-linear revision numbers later.

There is one externally visible change: conflict markers after
an update will now include the full CVS revision number,
including the "1." prefix.  It used to leave off the prefix.

Other than the conflict marker, this change doesn't effect
external functionality.  No new features, and the DB schema
is unchanged such that it continues to store just
the stripped rev numbers (without prefix).

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: split up long lines in req_{status,diff,log}
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:20 +0000 (23:42 -0600)]
cvsserver: split up long lines in req_{status,diff,log}

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: clean up client request handler map comments
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:19 +0000 (23:42 -0600)]
cvsserver: clean up client request handler map comments

  - Comment that it should not be considered a complete list.
  - #'annotate' comment  - Uncommented annotate line is 2 lines earlier.

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: remove unused functions _headrev and gethistory
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:18 +0000 (23:42 -0600)]
cvsserver: remove unused functions _headrev and gethistory

Remove:
   - _headrev() - It uses similar functionality from getmeta() and gethead().
   - gethistory() - It uses similar functions gethistorydense() and getlog().

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver update: comment about how we shouldn't remove a user-modified file
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:17 +0000 (23:42 -0600)]
cvsserver update: comment about how we shouldn't remove a user-modified file

Instead of a comment, we should really add test cases and actually fix it.

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: add comments about database schema/usage
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:16 +0000 (23:42 -0600)]
cvsserver: add comments about database schema/usage

No functionality changes, but these comments should make it easier to
understand how it works.

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver: removed unused sha1Or-k mode from kopts_from_path
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:15 +0000 (23:42 -0600)]
cvsserver: removed unused sha1Or-k mode from kopts_from_path

sha1Or-k was a vestige from an early, never-released
attempt to handle some oddball cases of CRLF conversion (-k option).
Ultimately it wasn't needed, and I should have gotten rid of it
before submitting the CRLF patch in the first place.

See also 90948a42892779 (add ability to guess -kb from contents).

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocvsserver t9400: add basic 'cvs log' test
Matthew Ogilvie [Sun, 14 Oct 2012 05:42:14 +0000 (23:42 -0600)]
cvsserver t9400: add basic 'cvs log' test

'cvs log' output is arguably deficient in a number of ways
(see the comment added with the test), but add a test for
the current output to detect for accidental regressions.

Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation/technical: convert plain text files to asciidoc
Thomas Ackermann [Tue, 16 Oct 2012 17:24:16 +0000 (19:24 +0200)]
Documentation/technical: convert plain text files to asciidoc

These were not originally meant for asciidoc, but they are already
so close.  Mark them up in asciidoc.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoChange headline of technical/send-pack-pipeline.txt to not confuse its content with...
Thomas Ackermann [Tue, 16 Oct 2012 17:23:08 +0000 (19:23 +0200)]
Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoShorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
Thomas Ackermann [Tue, 16 Oct 2012 17:21:57 +0000 (19:21 +0200)]
Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoSplit over-long synopsis in git-fetch-pack.txt into several lines
Thomas Ackermann [Tue, 16 Oct 2012 17:20:10 +0000 (19:20 +0200)]
Split over-long synopsis in git-fetch-pack.txt into several lines

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix up colored git-prompt
Simon Oosthoek [Tue, 16 Oct 2012 19:34:05 +0000 (21:34 +0200)]
Fix up colored git-prompt

The main point is to match the colors to be more close to the color
output of "git status -sb".

 - the branchname is green, or in red when the HEAD is detached;

 - the flags are either red or green for unstaged/staged and the
   remaining flags get a different color or none at all.

Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation/RelNotes: remove "updated up to this revision" markers
Thomas Ackermann [Tue, 16 Oct 2012 17:26:23 +0000 (19:26 +0200)]
Documentation/RelNotes: remove "updated up to this revision" markers

These were used to keep track of the last commit a release notes
entry was written for, and should have been removed when cutting
the final release.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.8.0
Junio C Hamano [Tue, 16 Oct 2012 20:27:23 +0000 (13:27 -0700)]
Update draft release notes to 1.8.0

We are almost there...

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocompletion: add format-patch options to send-email
Felipe Contreras [Tue, 16 Oct 2012 00:21:50 +0000 (02:21 +0200)]
completion: add format-patch options to send-email

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jk/maint-http-half-auth-push'
Junio C Hamano [Tue, 16 Oct 2012 18:44:37 +0000 (11:44 -0700)]
Merge branch 'jk/maint-http-half-auth-push'

Fixes a regression in maint-1.7.11 (v1.7.11.7), maint (v1.7.12.1)
and master (v1.8.0-rc0).

* jk/maint-http-half-auth-push:
  http: fix segfault in handle_curl_result

12 years agorefs: lock symref that is to be deleted, not its target
René Scharfe [Tue, 16 Oct 2012 10:22:15 +0000 (12:22 +0200)]
refs: lock symref that is to be deleted, not its target

When delete_ref is called on a symref then it locks its target and then
either deletes the target or the symref, depending on whether the flag
REF_NODEREF was set in the parameter delopt.

Instead, simply pass the flag to lock_ref_sha1_basic, which will then
either lock the target or the symref, and delete the locked ref.

This reimplements part of eca35a25 (Fix git branch -m for symrefs.).

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: Update Swedish translation (1964t0f0u)
Peter Krefting [Tue, 16 Oct 2012 07:38:11 +0000 (08:38 +0100)]
l10n: Update Swedish translation (1964t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
12 years agol10n: Update git.pot (3 new, 6 removed messages)
Jiang Xin [Tue, 16 Oct 2012 00:39:10 +0000 (08:39 +0800)]
l10n: Update git.pot (3 new, 6 removed messages)

This po/git.pot update is generated from v1.8.0-rc2-4-g42e55.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agoMerge branch 'master' of git://github.com/vnwildman/git
Jiang Xin [Tue, 16 Oct 2012 00:31:22 +0000 (08:31 +0800)]
Merge branch 'master' of git://github.com/vnwildman/git

* 'master' of git://github.com/vnwildman/git:
  l10n: vi.po: update translation upto cc76011

12 years agoSupport "**" wildcard in .gitignore and .gitattributes
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:26:02 +0000 (13:26 +0700)]
Support "**" wildcard in .gitignore and .gitattributes

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agowildmatch: make /**/ match zero or more directories
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:26:01 +0000 (13:26 +0700)]
wildmatch: make /**/ match zero or more directories

"foo/**/bar" matches "foo/x/bar", "foo/x/y/bar"... but not
"foo/bar". We make a special case, when foo/**/ is detected (and
"foo/" part is already matched), try matching "bar" with the rest of
the string.

"Match one or more directories" semantics can be easily achieved using
"foo/*/**/bar".

This also makes "**/foo" match "foo" in addition to "x/foo",
"x/y/foo"..

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agowildmatch: adjust "**" behavior
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:26:00 +0000 (13:26 +0700)]
wildmatch: adjust "**" behavior

Standard wildmatch() sees consecutive asterisks as "*" that can also
match slashes. But that may be hard to explain to users as
"abc/**/def" can match "abcdef", "abcxyzdef", "abc/def", "abc/x/def",
"abc/x/y/def"...

This patch changes wildmatch so that users can do

- "**/def" -> all paths ending with file/directory 'def'
- "abc/**" - equivalent to "/abc/"
- "abc/**/def" -> "abc/x/def", "abc/x/y/def"...
- otherwise consider the pattern malformed if "**" is found

Basically the magic of "**" only remains if it's wrapped around by
slashes.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agowildmatch: fix case-insensitive matching
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:59 +0000 (13:25 +0700)]
wildmatch: fix case-insensitive matching

dowild() does case insensitive matching by lower-casing the text. That
means lower case letters in patterns imply case-insensitive matching,
but upper case means exact matching.

We do not want that subtlety. Lower case pattern too so iwildmatch()
always does what we expect it to do.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agowildmatch: remove static variable force_lower_case
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:58 +0000 (13:25 +0700)]
wildmatch: remove static variable force_lower_case

One place less to worry about thread safety. Also combine wildmatch
and iwildmatch into one.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agowildmatch: make wildmatch's return value compatible with fnmatch
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:57 +0000 (13:25 +0700)]
wildmatch: make wildmatch's return value compatible with fnmatch

wildmatch returns non-zero if matched, zero otherwise. This patch
makes it return zero if matches, non-zero otherwise, like fnmatch().

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot3070: disable unreliable fnmatch tests
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:56 +0000 (13:25 +0700)]
t3070: disable unreliable fnmatch tests

These tests show different results on different fnmatch() versions. We
don't want to test fnmatch here. We want to make sure wildmatch
behavior matches fnmatch and that only makes sense in cases when
fnmatch() behaves consistently.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoIntegrate wildmatch to git
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:55 +0000 (13:25 +0700)]
Integrate wildmatch to git

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agowildmatch: follow Git's coding convention
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:54 +0000 (13:25 +0700)]
wildmatch: follow Git's coding convention

wildmatch's coding style is pretty close to Git's except the use of 4
space indentation instead of 8. This patch should produce empty diff
with "git diff -b"

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agowildmatch: remove unnecessary functions
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:53 +0000 (13:25 +0700)]
wildmatch: remove unnecessary functions

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoImport wildmatch from rsync
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:52 +0000 (13:25 +0700)]
Import wildmatch from rsync

These files are from rsync.git commit
f92f5b166e3019db42bc7fe1aa2f1a9178cd215d, which was the last commit
before rsync turned GPL-3. All files are imported as-is and
no-op. Adaptation is done in a separate patch.

rsync.git           ->  git.git
lib/wildmatch.[ch]      wildmatch.[ch]
wildtest.txt            t/t3070/wildtest.txt

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoctype: support iscntrl, ispunct, isxdigit and isprint
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:51 +0000 (13:25 +0700)]
ctype: support iscntrl, ispunct, isxdigit and isprint

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoctype: make sane_ctype[] const array
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:25:50 +0000 (13:25 +0700)]
ctype: make sane_ctype[] const array

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoattr: more matching optimizations from .gitignore
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:24:39 +0000 (13:24 +0700)]
attr: more matching optimizations from .gitignore

.gitattributes and .gitignore share the same pattern syntax but has
separate matching implementation. Over the years, ignore's
implementation accumulates more optimizations while attr's stays the
same.

This patch reuses the core matching functions that are also used by
excluded_from_list. excluded_from_list and path_matches can't be
merged due to differences in exclude and attr, for example:

* "!pattern" syntax is forbidden in .gitattributes.  As an attribute
  can be unset (i.e. set to a special value "false") or made back to
  unspecified (i.e. not even set to "false"), "!pattern attr" is unclear
  which one it means.

* we support attaching attributes to directories, but git-core
  internally does not currently make use of attributes on
  directories.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogitignore: make pattern parsing code a separate function
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:24:38 +0000 (13:24 +0700)]
gitignore: make pattern parsing code a separate function

This function can later be reused by attr.c. Also turn to_exclude
field into a flag.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoexclude: split pathname matching code into a separate function
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:24:37 +0000 (13:24 +0700)]
exclude: split pathname matching code into a separate function

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoexclude: fix a bug in prefix compare optimization
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:24:36 +0000 (13:24 +0700)]
exclude: fix a bug in prefix compare optimization

When "namelen" becomes zero at this stage, we have matched the fixed
part, but whether it actually matches the pattern still depends on the
pattern in "exclude". As demonstrated in t3001, path "three/a.3"
exists and it matches the "three/a.3" part in pattern "three/a.3[abc]",
but that does not mean a true match.

Don't be too optimistic and let fnmatch() do the job.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoexclude: split basename matching code into a separate function
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:24:35 +0000 (13:24 +0700)]
exclude: split basename matching code into a separate function

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoexclude: stricten a length check in EXC_FLAG_ENDSWITH case
Nguyễn Thái Ngọc Duy [Mon, 15 Oct 2012 06:24:34 +0000 (13:24 +0700)]
exclude: stricten a length check in EXC_FLAG_ENDSWITH case

This block of code deals with the "basename" part only, which has the
length of "pathlen - (basename - pathname)". Stricten the length check
and remove "pathname" from the main expression to avoid confusion.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: vi.po: update translation upto cc76011
Tran Ngoc Quan [Mon, 15 Oct 2012 07:35:49 +0000 (14:35 +0700)]
l10n: vi.po: update translation upto cc76011

* translate all new messages (100%)
* review some others

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
12 years agoconfig: exit on error accessing any config file
Jonathan Nieder [Sun, 14 Oct 2012 08:46:00 +0000 (01:46 -0700)]
config: exit on error accessing any config file

There is convenience in warning and moving on when somebody has a
bogus permissions on /etc/gitconfig and cannot do anything about it.
But the cost in predictability and security is too high --- when
unreadable config files are skipped, it means an I/O error or
permissions problem causes important configuration to be bypassed.

For example, servers may depend on /etc/gitconfig to enforce security
policy (setting transfer.fsckObjects or receive.deny*).  Best to
always error out when encountering trouble accessing a config file.

This may add inconvenience in some cases:

  1. You are inspecting somebody else's repo, and you do not have
     access to their .git/config file.  Git typically dies in this
     case already since we cannot read core.repositoryFormatVersion,
     so the change should not be too noticeable.

  2. You have used "sudo -u" or a similar tool to switch uid, and your
     environment still points Git at your original user's global
     config, which is not readable.  In this case people really would
     be inconvenienced (they would rather see the harmless warning and
     continue the operation) but they can work around it by setting
     HOME appropriately after switching uids.

  3. You do not have access to /etc/gitconfig due to a broken setup.
     In this case, erroring out is a good way to put pressure on the
     sysadmin to fix the setup.  While they wait for a reply, users
     can set GIT_CONFIG_NOSYSTEM to true to keep Git working without
     complaint.

After this patch, errors accessing the repository-local and systemwide
config files and files requested in include directives cause Git to
exit, just like errors accessing ~/.gitconfig.

Explained-by: Jeff King <peff@peff.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodoc: advertise GIT_CONFIG_NOSYSTEM
Jonathan Nieder [Sun, 14 Oct 2012 08:53:59 +0000 (01:53 -0700)]
doc: advertise GIT_CONFIG_NOSYSTEM

On a multiuser system where mortals do not have write access to /etc,
the GIT_CONFIG_NOSYSTEM variable is the best tool we have to keep
getting work done when a syntax error or other problem renders
/etc/gitconfig buggy, until the sysadmin sorts the problem out.

Noticed while experimenting with teaching git to error out when
/etc/gitconfig is unreadable.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Junio C Hamano [Sun, 14 Oct 2012 06:05:54 +0000 (23:05 -0700)]
Merge branch 'maint'

* maint:
  Fix spelling error in post-receive-email hook

12 years agoconfig: treat user and xdg config permission problems as errors
Jonathan Nieder [Sun, 14 Oct 2012 00:04:02 +0000 (17:04 -0700)]
config: treat user and xdg config permission problems as errors

Git reads multiple configuration files: settings come first from the
system config file (typically /etc/gitconfig), then the xdg config
file (typically ~/.config/git/config), then the user's dotfile
(~/.gitconfig), then the repository configuration (.git/config).

Git has always used access(2) to decide whether to use each file; as
an unfortunate side effect, that means that if one of these files is
unreadable (e.g., EPERM or EIO), git skips it.  So if I use
~/.gitconfig to override some settings but make a mistake and give it
the wrong permissions then I am subject to the settings the sysadmin
chose for /etc/gitconfig.

Better to error out and ask the user to correct the problem.

This only affects the user and xdg config files, since the user
presumably has enough access to fix their permissions.  If the system
config file is unreadable, the best we can do is to warn about it so
the user knows to notify someone and get on with work in the meantime.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoconfig, gitignore: failure to access with ENOTDIR is ok
Jonathan Nieder [Sun, 14 Oct 2012 00:03:07 +0000 (17:03 -0700)]
config, gitignore: failure to access with ENOTDIR is ok

The access_or_warn() function is used to check for optional
configuration files like .gitconfig and .gitignore and warn when they
are not accessible due to a configuration issue (e.g., bad
permissions).  It is not supposed to complain when a file is simply
missing.

Noticed on a system where ~/.config/git was a file --- when the new
XDG_CONFIG_HOME support looks for ~/.config/git/config it should
ignore ~/.config/git instead of printing irritating warnings:

 $ git status -s
 warning: unable to access '/home/jrn/.config/git/config': Not a directory
 warning: unable to access '/home/jrn/.config/git/config': Not a directory
 warning: unable to access '/home/jrn/.config/git/config': Not a directory
 warning: unable to access '/home/jrn/.config/git/config': Not a directory

Compare v1.7.12.1~2^2 (attr:failure to open a .gitattributes file
is OK with ENOTDIR, 2012-09-13).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix spelling error in post-receive-email hook
Richard Fearn [Sat, 13 Oct 2012 22:32:50 +0000 (23:32 +0100)]
Fix spelling error in post-receive-email hook

Signed-off-by: Richard Fearn <richardfearn@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoapply.c:update_pre_post_images(): the preimage can be truncated
Junio C Hamano [Fri, 12 Oct 2012 22:53:46 +0000 (15:53 -0700)]
apply.c:update_pre_post_images(): the preimage can be truncated

5166714 (apply: Allow blank context lines to match beyond EOF,
2010-03-06) and then later 0c3ef98 (apply: Allow blank *trailing*
context lines to match beyond EOF, 2010-04-08) taught "git apply"
to trim new blank lines at the end in the patch text when matching
the contents being patched and the preimage recorded in the patch,
under --whitespace=fix mode.

When a preimage is modified to match the current contents in
preparation for such a "fixed" patch application, the context lines
in the postimage must be updated to match (otherwise, it would
reintroduce whitespace breakages), and update_pre_post_images()
function is responsible for doing this.  However, this function was
not updated to take into account a case where the removal of
trailing blank lines reduces the number of lines in the preimage,
and triggered an assertion error.

The logic to fix the postimage by copying the corrected context
lines from the preimage was not prepared to handle this case,
either, but it was protected by the assert() and only got exposed
when the assertion is corrected.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Junio C Hamano [Fri, 12 Oct 2012 18:36:06 +0000 (11:36 -0700)]
Merge branch 'maint'

* maint:
  gitweb.cgi: fix "comitter_tz" typo in feed

12 years agohttp: do not set up curl auth after a 401
Jeff King [Fri, 12 Oct 2012 07:35:59 +0000 (03:35 -0400)]
http: do not set up curl auth after a 401

When we get an http 401, we prompt for credentials and put
them in our global credential struct. We also feed them to
the curl handle that produced the 401, with the intent that
they will be used on a retry.

When the code was originally introduced in commit 42653c0,
this was a necessary step. However, since dfa1725, we always
feed our global credential into every curl handle when we
initialize the slot with get_active_slot. So every further
request already feeds the credential to curl.

Moreover, accessing the slot here is somewhat dubious. After
the slot has produced a response, we don't actually control
it any more.  If we are using curl_multi, it may even have
been re-initialized to handle a different request.

It just so happens that we will reuse the curl handle within
the slot in such a case, and that because we only keep one
global credential, it will be the one we want.  So the
current code is not buggy, but it is misleading.

By cleaning it up, we can remove the slot argument entirely
from handle_curl_result, making it much more obvious that
slots should not be accessed after they are marked as
finished.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoremote-curl: do not call run_slot repeatedly
Jeff King [Fri, 12 Oct 2012 07:35:33 +0000 (03:35 -0400)]
remote-curl: do not call run_slot repeatedly

Commit b81401c (http: prompt for credentials on failed POST)
taught post_rpc to call run_slot in a loop in order to retry
a request after asking the user for credentials. However,
after a call to run_slot we will have called
finish_active_slot. This means we have released the slot,
and we should no longer look at it.

As it happens, this does not cause any bugs in the current
code, since we know that we are not using curl_multi in this
code path, and therefore nobody will have taken over our
slot in the meantime. However, it is good form to actually
call get_active_slot again. It also future proofs us against
changes in the http code.

We can do this by jumping back to a retry label at the top
of our function. We just need to reorder a few setup lines
that should not be repeated; everything else within the loop
is either idempotent, needs to be repeated, or in a path we
do not follow (e.g., we do not even try when large_request
is set, because we don't know how much data we might have
streamed from our helper program).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp: fix segfault in handle_curl_result
Jeff King [Fri, 12 Oct 2012 06:22:49 +0000 (02:22 -0400)]
http: fix segfault in handle_curl_result

When we create an http active_request_slot, we can set its
"results" pointer back to local storage. The http code will
fill in the details of how the request went, and we can
access those details even after the slot has been cleaned
up.

Commit 8809703 (http: factor out http error code handling)
switched us from accessing our local results struct directly
to accessing it via the "results" pointer of the slot. That
means we're accessing the slot after it has been marked as
finished, defeating the whole purpose of keeping the results
storage separate.

Most of the time this doesn't matter, as finishing the slot
does not actually clean up the pointer. However, when using
curl's multi interface with the dumb-http revision walker,
we might actually start a new request before handing control
back to the original caller. In that case, we may reuse the
slot, zeroing its results pointer, and leading the original
caller to segfault while looking for its results inside the
slot.

Instead, we need to pass a pointer to our local results
storage to the handle_curl_result function, rather than
relying on the pointer in the slot struct. This matches what
the original code did before the refactoring (which did not
use a separate function, and therefore just accessed the
results struct directly).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogitweb.cgi: fix "comitter_tz" typo in feed
Dylan Alex Simon [Thu, 11 Oct 2012 20:40:35 +0000 (16:40 -0400)]
gitweb.cgi: fix "comitter_tz" typo in feed

gitweb's feeds sometimes contained committer timestamps in the wrong timezone
due to a misspelling.

Signed-off-by: Dylan Simon <dylan@dylex.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogrep: stop looking at random places for .gitattributes
Nguyễn Thái Ngọc Duy [Fri, 12 Oct 2012 10:49:38 +0000 (17:49 +0700)]
grep: stop looking at random places for .gitattributes

grep searches for .gitattributes using "name" field in struct
grep_source but that field is not real on-disk path name. For example,
"grep pattern rev" fills the field with "rev:path", and Git looks for
.gitattributes in the (non-existent but exploitable) path "rev:path"
instead of "path".

This patch passes real paths down to grep_source_load_driver() when:

 - grep on work tree
 - grep on the index
 - grep a commit (or a tag if it points to a commit)

so that these cases look up .gitattributes at proper paths.
.gitattributes lookup is disabled in all other cases.

Initial-work-by: Jeff King <peff@peff.net>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agorebase: Handle cases where format-patch fails
Andrew Wong [Thu, 11 Oct 2012 03:54:03 +0000 (23:54 -0400)]
rebase: Handle cases where format-patch fails

'format-patch' could fail due to reasons such as out of memory. Such
failures are not detected or handled, which causes rebase to incorrectly
think that it completed successfully and continue with cleanup. i.e.
calling move_to_original_branch

Instead of using a pipe, we separate 'format-patch' and 'am' by using an
intermediate file. This gurantees that we can invoke 'am' with the
complete input, or not invoking 'am' at all if 'format-patch' failed.

Also remove the use of '&&' at the end of the if-block, and rearrange
the 'write_basic_state' and 'move_to_original_branch' to make the logic
flow a bit better and easier to read.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agomergetools/p4merge: Handle "/dev/null"
David Aguilar [Thu, 11 Oct 2012 03:22:36 +0000 (20:22 -0700)]
mergetools/p4merge: Handle "/dev/null"

p4merge does not properly handle the case where "/dev/null"
is passed as a filename.

Work it around by creating a temporary file for this purpose.

Reported-by: Jeremy Morton <admin@game-point.net>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 Needs to be amended with Tested-by when a report comes...

12 years agoshow color hints based on state of the git tree
Simon Oosthoek [Wed, 10 Oct 2012 19:32:24 +0000 (21:32 +0200)]
show color hints based on state of the git tree

By setting GIT_PS1_SHOW_COLORHINTS when using __git_ps1
as PROMPT_COMMAND, you will get color hints in addition to
a different character (*+% etc.) to indicate the state of
the tree.

Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoAllow __git_ps1 to be used in PROMPT_COMMAND
Simon Oosthoek [Wed, 10 Oct 2012 19:31:58 +0000 (21:31 +0200)]
Allow __git_ps1 to be used in PROMPT_COMMAND

Changes __git_ps1 to allow its use as PROMPT_COMMAND in bash
in addition to setting PS1 with __git_ps1 in a command substitution.
PROMPT_COMMAND has advantages for using color without running
into prompt-wrapping issues. Only by assigning \[ and \] to PS1
directly can bash know that these and the enclosed zero-width codes in
between don't count in the length of the prompt.

Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.8.0-rc2 v1.8.0-rc2
Junio C Hamano [Thu, 11 Oct 2012 18:18:56 +0000 (11:18 -0700)]
Git 1.8.0-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agotest-lib: Fix say_color () not to interpret \a\b\c in the message
Junio C Hamano [Thu, 11 Oct 2012 17:40:36 +0000 (10:40 -0700)]
test-lib: Fix say_color () not to interpret \a\b\c in the message

When running with color disabled (e.g. under prove to produce TAP
output), say_color() helper function is defined to use echo to show
the message.  With a message that ends with "\c", echo is allowed to
interpret it as "Do not end the line with LF".

Use printf "%s\n" to emit the message literally.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'rr/git-uri-doc'
Junio C Hamano [Wed, 10 Oct 2012 21:57:26 +0000 (14:57 -0700)]
Merge branch 'rr/git-uri-doc'

* rr/git-uri-doc:
  Git url doc: mark ftp/ftps as read-only and deprecate them

12 years agoMerge branch 'bw/cp-a-is-gnuism'
Junio C Hamano [Wed, 10 Oct 2012 21:57:09 +0000 (14:57 -0700)]
Merge branch 'bw/cp-a-is-gnuism'

* bw/cp-a-is-gnuism:
  tests: "cp -a" is a GNUism

12 years agoMerge branch 'nd/doc-ignore'
Junio C Hamano [Wed, 10 Oct 2012 21:57:02 +0000 (14:57 -0700)]
Merge branch 'nd/doc-ignore'

* nd/doc-ignore:
  gitignore.txt: suggestions how to get literal # or ! at the beginning

12 years agoMerge branch 'jc/doc-long-options'
Junio C Hamano [Wed, 10 Oct 2012 21:56:52 +0000 (14:56 -0700)]
Merge branch 'jc/doc-long-options'

* jc/doc-long-options:
  gitcli: parse-options lets you omit tail of long options

12 years agoSync with maint
Junio C Hamano [Wed, 10 Oct 2012 21:54:25 +0000 (14:54 -0700)]
Sync with maint

* maint:
  attr: a note about the order of .gitattributes lookup

12 years agoMerge git://bogomips.org/git-svn
Junio C Hamano [Wed, 10 Oct 2012 20:53:56 +0000 (13:53 -0700)]
Merge git://bogomips.org/git-svn

* git://bogomips.org/git-svn:
  svn test: escape peg revision separator using empty peg rev
  git svn: work around SVN 1.7 mishandling of svn:special changes

12 years agosvn test: escape peg revision separator using empty peg rev
Jonathan Nieder [Tue, 9 Oct 2012 08:41:45 +0000 (01:41 -0700)]
svn test: escape peg revision separator using empty peg rev

This test script uses "svn cp" to create a branch with an @-sign in
its name:

svn cp "pr ject/trunk" "pr ject/branches/not-a@{0}reflog"

That sets up for later tests that fetch the branch and check that git
svn mangles the refname appropriately.

Unfortunately, modern svn versions interpret path arguments with an
@-sign as an example of path@revision syntax (which pegs a path to a
particular revision) and truncate the path or error out with message
"svn: E205000: Syntax error parsing peg revision '{0}reflog'".

When using subversion 1.6.x, escaping the @ sign as %40 avoids trouble
(see 08fd28bb, 2010-07-08).  Newer versions are stricter:

$ svn cp "$repo/pr ject/trunk" "$repo/pr ject/branches/not-a%40{reflog}"
svn: E205000: Syntax error parsing peg revision '%7B0%7Dreflog'

The recommended method for escaping a literal @ sign in a path passed
to subversion is to add an empty peg revision at the end of the path
("branches/not-a@{0}reflog@").  Do that.

Pre-1.6.12 versions of Subversion probably treat the trailing @ as
another literal @-sign (svn issue 3651).  Luckily ever since
v1.8.0-rc0~155^2~7 (t9118: workaround inconsistency between SVN
versions, 2012-07-28) the test can survive that.

Tested with Debian Subversion 1.6.12dfsg-6 and 1.7.5-1 and r1395837
of Subversion trunk (1.8.x).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Tested-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
12 years agogit svn: work around SVN 1.7 mishandling of svn:special changes
Jonathan Nieder [Tue, 9 Oct 2012 10:12:39 +0000 (03:12 -0700)]
git svn: work around SVN 1.7 mishandling of svn:special changes

Subversion represents symlinks as ordinary files with content starting
with "link " and the svn:special property set to "*".  Thus a file can
switch between being a symlink and a non-symlink simply by toggling
its svn:special property, and new checkouts will automatically write a
file of the appropriate type.  Likewise, in subversion 1.6 and older,
running "svn update" would notice changes in filetype and update the
working copy appropriately.

Starting in subversion 1.7 (issue 4091), changes to the svn:special
property trip an assertion instead:

$ svn up svn-tree
Updating 'svn-tree':
svn: E235000: In file 'subversion/libsvn_wc/update_editor.c' \
line 1583: assertion failed (action == svn_wc_conflict_action_edit \
|| action == svn_wc_conflict_action_delete || action == \
svn_wc_conflict_action_replace)

Revisions prepared with ordinary svn commands ("svn add" and not "svn
propset") don't trip this because they represent these filetype
changes using a replace operation, which is approximately equivalent
to removal followed by adding a new file and works fine.  Follow suit.

Noticed using t9100.  After this change, git-svn's file-to-symlink
changes are sent in a format that modern "svn update" can handle and
tests t9100.11-13 pass again.

[ew: s,git-svn\.perl,perl/Git/SVN/Editor.pm,g]

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
12 years agoMALLOC_CHECK: Allow checking to be disabled from config.mak
Ramsay Jones [Sat, 6 Oct 2012 17:33:08 +0000 (18:33 +0100)]
MALLOC_CHECK: Allow checking to be disabled from config.mak

The malloc checks can be disabled using the TEST_NO_MALLOC_CHECK
variable, either from the environment or command line of an
'make test' invocation. In order to allow the malloc checks to be
disabled from the 'config.mak' file, we add TEST_NO_MALLOC_CHECK
to the environment using an export directive.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoattr: a note about the order of .gitattributes lookup
Nguyen Thai Ngoc Duy [Wed, 10 Oct 2012 13:55:52 +0000 (20:55 +0700)]
attr: a note about the order of .gitattributes lookup

This is the documentation part of

1a9d7e9 (attr.c: read .gitattributes from index as well. - 2007-08-14)
06f33c1 (Read attributes from the index that is being checked out - 2009-03-13)

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-send-email: introduce compose-encoding
Krzysztof Mazur [Tue, 9 Oct 2012 23:02:56 +0000 (01:02 +0200)]
git-send-email: introduce compose-encoding

The introduction email (--compose option) have encoding hardcoded to
UTF-8, but invoked editor may not use UTF-8 encoding.
The encoding used by patches can be changed by the "8bit-encoding"
option, but this option does not have effect on introduction email
and equivalent for introduction email is missing.

Added compose-encoding command line option and sendemail.composeencoding
configuration option specify encoding of introduction email.

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agolog: honor grep.* configuration
Junio C Hamano [Tue, 9 Oct 2012 23:49:57 +0000 (16:49 -0700)]
log: honor grep.* configuration

Now the grep_config() callback is reusable from other configuration
callbacks, call it from git_log_config() so that grep.patterntype
and friends can be used with the commands in the "git log" family.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agolog --grep: accept --basic-regexp and --perl-regexp
Junio C Hamano [Wed, 3 Oct 2012 22:01:34 +0000 (15:01 -0700)]
log --grep: accept --basic-regexp and --perl-regexp

When we added the "--perl-regexp" option (or "-P") to "git grep", we
should have done the same for the commands in the "git log" family,
but somehow we forgot to do so.  This corrects it, but we will
reserve the short-and-sweet "-P" option for something else for now.

Also introduce the "--basic-regexp" option for completeness, so that
the "last one wins" principle can be used to defeat an earlier -E
option, e.g. "git log -E --basic-regexp --grep='<bre>'".  Note that
it cannot have the short "-G" option as the option is to grep in the
patch text in the context of "log" family.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agolog --grep: use the same helper to set -E/-F options as "git grep"
Junio C Hamano [Wed, 3 Oct 2012 21:50:51 +0000 (14:50 -0700)]
log --grep: use the same helper to set -E/-F options as "git grep"

The command line option parser for "git log -F -E --grep='<ere>'"
did not flip the "fixed" bit, violating the general "last option
wins" principle among conflicting options.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agorevisions: initialize revs->grep_filter using grep_init()
Junio C Hamano [Tue, 9 Oct 2012 23:40:03 +0000 (16:40 -0700)]
revisions: initialize revs->grep_filter using grep_init()

Instead of using the hand-rolled initialization sequence,
use grep_init() to populate the necessary bits.  This opens
the door to allow the calling commands to optionally read
grep.* configuration variables via git_config() if they
want to.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogrep: move pattern-type bits support to top-level grep.[ch]
Junio C Hamano [Wed, 3 Oct 2012 21:47:48 +0000 (14:47 -0700)]
grep: move pattern-type bits support to top-level grep.[ch]

Switching between -E/-G/-P/-F correctly needs a lot more than just
flipping opt->regflags bit these days, and we have a nice helper
function buried in builtin/grep.c for the sole use of "git grep".

Extract it so that "log --grep" family can also use it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogrep: move the configuration parsing logic to grep.[ch]
Junio C Hamano [Tue, 9 Oct 2012 23:17:50 +0000 (16:17 -0700)]
grep: move the configuration parsing logic to grep.[ch]

The configuration handling is a library-ish part of this program,
that is not specific to "git grep" command.  It should be reusable
by "log" and others.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agobuiltin/grep.c: make configuration callback more reusable
Junio C Hamano [Tue, 9 Oct 2012 23:04:12 +0000 (16:04 -0700)]
builtin/grep.c: make configuration callback more reusable

The grep_config() function takes one instance of grep_opt as its
callback parameter, and populates it by running git_config().

This has three practical implications:

 - You have to have an instance of grep_opt already when you call
   the configuration, but that is not necessarily always true.  You
   may be trying to initialize the grep_filter member of rev_info,
   but are not ready to call init_revisions() on it yet.

 - It is not easy to enhance grep_config() in such a way to make it
   cascade to other callback functions to grab other variables in
   one call of git_config(); grep_config() can be cascaded into from
   other callbacks, but it has to be at the leaf level of a cascade.

 - If you ever need to use more than one instance of grep_opt, you
   will have to open and read the configuration file(s) every time
   you initialize them.

Rearrange the configuration mechanism and model it after how diff
configuration variables are handled.  An early call to git_config()
reads and remembers the values taken from the configuration in the
default "template", and a separate call to grep_init() uses this
template to instantiate a grep_opt.

The next step will be to move some of this out of this file so that
the other user of the grep machinery (i.e. "log") can use it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Junio C Hamano [Tue, 9 Oct 2012 21:23:45 +0000 (14:23 -0700)]
Merge branch 'maint'

* maint:
  l10n: de.po: fix a few minor typos

12 years agoconfigure.ac: Add missing comma to CC_LD_DYNPATH
Øyvind A. Holm [Tue, 9 Oct 2012 14:26:11 +0000 (16:26 +0200)]
configure.ac: Add missing comma to CC_LD_DYNPATH

40bfbde ("build: don't duplicate substitution of make variables",
2012-09-11) by mistake removed a necessary comma at the end of
"CC_LD_DYNPATH=-Wl,rpath," in line 414.

When executing "./configure --with-zlib=PATH", this resulted in

      [...]
      CC xdiff/xhistogram.o
      AR xdiff/lib.a
      LINK git-credential-store
  /usr/bin/ld: bad -rpath option
  collect2: ld returned 1 exit status
  make: *** [git-credential-store] Error 1
  $

during make.

Signed-off-by: Øyvind A. Holm <sunny@sunbase.org>
Acked-by: Stefano Lattarini <stefano.lattarini@gmail.com>
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 [Tue, 9 Oct 2012 18:48:53 +0000 (11:48 -0700)]
Merge branch 'maint' of git://github.com/git-l10n/git-po into maint

* 'maint' of git://github.com/git-l10n/git-po:
  l10n: de.po: fix a few minor typos

12 years agotests: "cp -a" is a GNUism
Ben Walton [Mon, 8 Oct 2012 08:08:01 +0000 (09:08 +0100)]
tests: "cp -a" is a GNUism

These tests just want a bit-for-bit identical copy; they do not need
even -H (there is no symbolic link involved) nor -p (there is no
funny permission or ownership issues involved).

Just use "cp -R" instead.

Signed-off-by: Ben Walton <bdwalton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>