git.git
11 years agoMerge branch 'da/p4merge-mktemp'
Junio C Hamano [Thu, 3 Jan 2013 18:29:32 +0000 (10:29 -0800)]
Merge branch 'da/p4merge-mktemp'

Create an empty file in $TMPDIR instead of using an empty file in
the local directory.

* da/p4merge-mktemp:
  mergetools/p4merge: Honor $TMPDIR for the /dev/null placeholder

11 years agoMerge branch 'ms/subtree-fixlets'
Junio C Hamano [Thu, 3 Jan 2013 18:29:29 +0000 (10:29 -0800)]
Merge branch 'ms/subtree-fixlets'

* ms/subtree-fixlets:
  git-subtree: fix typo in manpage
  git-subtree: ignore git-subtree executable

11 years agoMerge branch 'as/test-tweaks'
Junio C Hamano [Thu, 3 Jan 2013 18:29:12 +0000 (10:29 -0800)]
Merge branch 'as/test-tweaks'

Output from the tests is coloured using "green is okay, yellow is
questionable, red is bad and blue is informative" scheme.

* as/test-tweaks:
  tests: paint unexpectedly fixed known breakages in bold red
  tests: test the test framework more thoroughly
  tests: refactor mechanics of testing in a sub test-lib
  tests: change info messages from yellow/brown to cyan
  tests: paint skipped tests in blue
  tests: paint known breakages in yellow
  tests: test number comes first in 'not ok $count - $message'

11 years agoMerge branch 'jc/same-encoding'
Junio C Hamano [Thu, 3 Jan 2013 18:29:08 +0000 (10:29 -0800)]
Merge branch 'jc/same-encoding'

Finishing touches to the series to unify "Do we need to reencode
between these two encodings?" logic.

* jc/same-encoding:
  format_commit_message(): simplify calls to logmsg_reencode()

11 years agoMerge branch 'pf/editor-ignore-sigint'
Junio C Hamano [Thu, 3 Jan 2013 18:28:45 +0000 (10:28 -0800)]
Merge branch 'pf/editor-ignore-sigint'

The behaviour visible to the end users was confusing, when they
attempt to kill a process spawned in the editor that was in turn
launched by Git with SIGINT (or SIGQUIT), as Git would catch that
signal and die.  We ignore these signals now.

* pf/editor-ignore-sigint:
  launch_editor: propagate signals from editor to git
  run-command: do not warn about child death from terminal
  launch_editor: ignore terminal signals while editor has control
  launch_editor: refactor to use start/finish_command
  run-command: drop silent_exec_failure arg from wait_or_whine

11 years agoMerge branch 'mh/pthreads-autoconf'
Junio C Hamano [Thu, 3 Jan 2013 18:28:33 +0000 (10:28 -0800)]
Merge branch 'mh/pthreads-autoconf'

* mh/pthreads-autoconf:
  configure.ac: fix pthreads detection on Mac OS X

11 years agoMerge branch 'mk/qnx'
Junio C Hamano [Thu, 3 Jan 2013 18:28:26 +0000 (10:28 -0800)]
Merge branch 'mk/qnx'

Port to QNX.

* mk/qnx:
  Port to QNX
  Make lock local to fetch_pack

11 years agoMerge branch 'dm/port'
Junio C Hamano [Thu, 3 Jan 2013 18:28:21 +0000 (10:28 -0800)]
Merge branch 'dm/port'

Add a few more knobs for new platform ports can tweak.

* dm/port:
  git-compat-util.h: do not #include <sys/param.h> by default
  Generalize the inclusion of strings.h
  Detect when the passwd struct is missing pw_gecos
  Support builds when sys/param.h is missing

11 years agoMerge branch 'ss/nedmalloc-compilation'
Junio C Hamano [Thu, 3 Jan 2013 18:14:10 +0000 (10:14 -0800)]
Merge branch 'ss/nedmalloc-compilation'

* ss/nedmalloc-compilation:
  nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2

11 years agoMerge branch 'jc/maint-fnmatch-old-style-definition'
Junio C Hamano [Thu, 3 Jan 2013 18:14:05 +0000 (10:14 -0800)]
Merge branch 'jc/maint-fnmatch-old-style-definition'

Update old-style function definition "int foo(bar) int bar; {}"
to "int foo(int bar) {}".

* jc/maint-fnmatch-old-style-definition:
  compat/fnmatch: update old-style definition to ANSI

11 years agomerge: Honor prepare-commit-msg return code
Antoine Pelisse [Wed, 2 Jan 2013 18:42:50 +0000 (19:42 +0100)]
merge: Honor prepare-commit-msg return code

65969d4 (merge: honor prepare-commit-msg hook, 2011-02-14) tried to
make "git commit" and "git merge" consistent, because a merge that
required user assistance has to be concluded with "git commit", but
back then only "git commit" triggered prepare-commit-msg hook.

When it added a call to run the prepare-commit-msg hook, however, it
forgot to check the exit code from the hook like "git commit" does,
and ended up replacing one inconsistency with another.

When prepare-commit-msg hook that is run from "git merge" exits with
a non-zero status, abort the commit.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoformat-patch: pick up branch description when no ref is specified
Nguyễn Thái Ngọc Duy [Thu, 3 Jan 2013 16:16:37 +0000 (23:16 +0700)]
format-patch: pick up branch description when no ref is specified

We only try to get branch name in "format-patch origin" case or
similar and not "format-patch -22" where HEAD is automatically
added. Without correct branch name, branch description cannot be
added. Make sure we always get branch name.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotests: turn on test-lint by default
Jeff King [Thu, 3 Jan 2013 07:17:51 +0000 (02:17 -0500)]
tests: turn on test-lint by default

The test Makefile knows about a few "lint" checks for common
errors. However, they are not enabled as part of "make test"
by default, which means that many people do not bother
running them. Since they are both quick to run and accurate
(i.e., no false positives), there should be no harm in
turning them on and helping submitters catch errors earlier.

We could just set:

  TEST_LINT = test-lint

to enable all tests. But that would be unnecessarily
annoying later on if we add slower or less accurate tests
that should not be part of the default. Instead, we name the
tests individually.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoformat-patch: pick up correct branch name from symbolic ref
Nguyễn Thái Ngọc Duy [Thu, 3 Jan 2013 14:03:10 +0000 (21:03 +0700)]
format-patch: pick up correct branch name from symbolic ref

find_branch_name() assumes to take refs/heads/<branch>. But we also
have symbolic refs, such as HEAD, that can point to a valid branch in
refs/heads and do not follow refs/heads/<branch> syntax. Remove the
assumption and apply normal ref resolution. After all it would be
confusing if rev machinery resolves a ref in one way and
find_branch_name() another.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot4014: a few more tests on cover letter using branch description
Nguyễn Thái Ngọc Duy [Thu, 3 Jan 2013 14:03:09 +0000 (21:03 +0700)]
t4014: a few more tests on cover letter using branch description

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agobranch: delete branch description if it's empty
Nguyễn Thái Ngọc Duy [Thu, 3 Jan 2013 14:03:08 +0000 (21:03 +0700)]
branch: delete branch description if it's empty

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: detect local repositories
Felipe Contreras [Wed, 28 Nov 2012 01:01:35 +0000 (02:01 +0100)]
remote-bzr: detect local repositories

So we don't create a clone unnecessarily.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: add support for older versions of bzr
Felipe Contreras [Wed, 28 Nov 2012 01:01:34 +0000 (02:01 +0100)]
remote-bzr: add support for older versions of bzr

At least as old as 2.0.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: add support to push special modes
Felipe Contreras [Sun, 11 Nov 2012 14:19:58 +0000 (15:19 +0100)]
remote-bzr: add support to push special modes

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: add support for fecthing special modes
Felipe Contreras [Sun, 11 Nov 2012 14:19:57 +0000 (15:19 +0100)]
remote-bzr: add support for fecthing special modes

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: add simple tests
Felipe Contreras [Sun, 11 Nov 2012 14:19:56 +0000 (15:19 +0100)]
remote-bzr: add simple tests

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotest: Add check-non-portable-shell.pl
Torsten Bögershausen [Wed, 2 Jan 2013 23:20:19 +0000 (00:20 +0100)]
test: Add check-non-portable-shell.pl

Add the perl script "check-non-portable-shell.pl" to detect
non-portable shell syntax.

"echo -n" is an example of a shell command working on Linux, but not
on Mac OS X.

These shell commands are checked and reported as error:

 - "echo -n" (printf should be used)
 - "sed -i" (GNUism; use a temp file instead)
 - "declare" (bashism, often used with arrays)
 - "which" (unreliable exit status and output; use type instead)
 - "test a == b" (bashism for "test a = b")

"make test-lint-shell-syntax" can be used to run only the check.

Helped-By: Jeff King <peff@peff.net>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoformat-patch: document and test --reroll-count
Junio C Hamano [Wed, 2 Jan 2013 22:16:07 +0000 (14:16 -0800)]
format-patch: document and test --reroll-count

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoStart 1.8.2 cycle
Junio C Hamano [Wed, 2 Jan 2013 18:44:12 +0000 (10:44 -0800)]
Start 1.8.2 cycle

Various fixes that have been cooking in 'next' have been merged. All
of them should go to 'maint' for 1.8.1.1 later.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/test-portability'
Junio C Hamano [Wed, 2 Jan 2013 18:53:59 +0000 (10:53 -0800)]
Merge branch 'jc/test-portability'

* jc/test-portability:
  t9020: use configured Python to run the test helper
  t3600: Avoid "cp -a", which is a GNUism

11 years agoMerge branch 'jc/maint-fbsd-sh-ifs-workaround'
Junio C Hamano [Wed, 2 Jan 2013 18:40:41 +0000 (10:40 -0800)]
Merge branch 'jc/maint-fbsd-sh-ifs-workaround'

Some shells do not behave correctly when IFS is unset; work it
around by explicitly setting it to the default value.

* jc/maint-fbsd-sh-ifs-workaround:
  sh-setup: work around "unset IFS" bug in some shells

11 years agoMerge branch 'sp/shortlog-missing-lf'
Junio C Hamano [Wed, 2 Jan 2013 18:40:34 +0000 (10:40 -0800)]
Merge branch 'sp/shortlog-missing-lf'

When a line to be wrapped has a solid run of non space characters
whose length exactly is the wrap width, "git shortlog -w" failed to
add a newline after such a line.

* sp/shortlog-missing-lf:
  strbuf_add_wrapped*(): Remove unused return value
  shortlog: fix wrapping lines of wraplen

11 years agoMerge branch 'md/gitweb-sort-by-age'
Junio C Hamano [Wed, 2 Jan 2013 18:40:03 +0000 (10:40 -0800)]
Merge branch 'md/gitweb-sort-by-age'

"gitweb", when sorting by age to show repositories with new
activities first, used to sort repositories with absolutely nothing
in it early, which was not very useful.

* md/gitweb-sort-by-age:
  gitweb: Sort projects with undefined ages last

11 years agoMerge branch 'nd/invalidate-i-t-a-cache-tree'
Junio C Hamano [Wed, 2 Jan 2013 18:39:51 +0000 (10:39 -0800)]
Merge branch 'nd/invalidate-i-t-a-cache-tree'

After "git add -N" and then writing a tree object out of the
index, the cache-tree data structure got corrupted.

* nd/invalidate-i-t-a-cache-tree:
  cache-tree: invalidate i-t-a paths after generating trees
  cache-tree: fix writing cache-tree when CE_REMOVE is present
  cache-tree: replace "for" loops in update_one with "while" loops
  cache-tree: remove dead i-t-a code in verify_cache()

11 years agoMerge branch 'jk/repack-ref-racefix'
Junio C Hamano [Wed, 2 Jan 2013 18:39:36 +0000 (10:39 -0800)]
Merge branch 'jk/repack-ref-racefix'

"git pack-refs" that ran in parallel to another process that created
new refs had a nasty race.

* jk/repack-ref-racefix:
  refs: do not use cached refs in repack_without_ref

11 years agoMerge branch 'rb/http-cert-cred-no-username-prompt'
Junio C Hamano [Wed, 2 Jan 2013 18:39:21 +0000 (10:39 -0800)]
Merge branch 'rb/http-cert-cred-no-username-prompt'

http transport was wrong to ask for the username when the
authentication is done by certificate identity.

* rb/http-cert-cred-no-username-prompt:
  http.c: Avoid username prompt for certifcate credentials

11 years agoMerge branch 'mk/maint-graph-infinity-loop'
Junio C Hamano [Wed, 2 Jan 2013 18:39:09 +0000 (10:39 -0800)]
Merge branch 'mk/maint-graph-infinity-loop'

The --graph code fell into infinite loop when asked to do what the
code did not expect.

* mk/maint-graph-infinity-loop:
  graph.c: infinite loop in git whatchanged --graph -m

11 years agoMerge branch 'ss/svn-prompt'
Junio C Hamano [Wed, 2 Jan 2013 18:38:50 +0000 (10:38 -0800)]
Merge branch 'ss/svn-prompt'

The way "git svn" asked for password using SSH_ASKPASS and
GIT_ASKPASS was not in line with the rest of the system.

* ss/svn-prompt:
  git-svn, perl/Git.pm: extend and use Git->prompt method for querying users
  perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPASS is not set
  git-svn, perl/Git.pm: add central method for prompting passwords

11 years agoMerge branch 'jc/mkstemp-more-careful-error-reporting'
Junio C Hamano [Wed, 2 Jan 2013 18:38:25 +0000 (10:38 -0800)]
Merge branch 'jc/mkstemp-more-careful-error-reporting'

After failing to create a temporary file using mkstemp(), failing
pathname was not reported correctly on some platforms.

* jc/mkstemp-more-careful-error-reporting:
  xmkstemp(): avoid showing truncated template more carefully

11 years agoMerge branch 'jc/test-cvs-no-init-in-existing-dir'
Junio C Hamano [Wed, 2 Jan 2013 18:38:09 +0000 (10:38 -0800)]
Merge branch 'jc/test-cvs-no-init-in-existing-dir'

t9200 runs "cvs init" on a directory that already exists, but a
platform can configure this fail for the current user (e.g. you need
to be in the cvsadmin group on NetBSD 6.0).

* jc/test-cvs-no-init-in-existing-dir:
  t9200: let "cvs init" create the test repository

11 years agoMerge branch 'jc/maint-test-portability'
Junio C Hamano [Wed, 2 Jan 2013 18:37:48 +0000 (10:37 -0800)]
Merge branch 'jc/maint-test-portability'

t4014, t9502 and t0200 tests had various portability issues that
broke on OpenBSD.

* jc/maint-test-portability:
  t4014: fix arguments to grep
  t9502: do not assume GNU tar
  t0200: "locale" may not exist

11 years agoMerge branch 'mh/ceiling'
Junio C Hamano [Wed, 2 Jan 2013 18:36:59 +0000 (10:36 -0800)]
Merge branch 'mh/ceiling'

An element on GIT_CEILING_DIRECTORIES list that does not name the
real path to a directory (i.e. a symbolic link) could have caused
the GIT_DIR discovery logic to escape the ceiling.

* mh/ceiling:
  string_list_longest_prefix(): remove function
  setup_git_directory_gently_1(): resolve symlinks in ceiling paths
  longest_ancestor_length(): require prefix list entries to be normalized
  longest_ancestor_length(): take a string_list argument for prefixes
  longest_ancestor_length(): use string_list_split()
  Introduce new function real_path_if_valid()
  real_path_internal(): add comment explaining use of cwd
  Introduce new static function real_path_internal()

11 years agobuild: do not automatically reconfigure unless configure.ac changed
Jonathan Nieder [Wed, 2 Jan 2013 08:25:44 +0000 (00:25 -0800)]
build: do not automatically reconfigure unless configure.ac changed

Starting with v1.7.12-rc0~4^2 (build: reconfigure automatically if
configure.ac changes, 2012-07-19), "config.status --recheck" is
automatically run every time the "configure" script changes.  In
particular, that means the configuration procedure repeats whenever
the version number changes (since the configure script changes to
support "./configure --version" and "./configure --help"), making
bisecting painfully slow.

The intent was to make the reconfiguration process only trigger for
changes to configure.ac's logic.  Tweak the Makefile rule to match
that intent by depending on configure.ac instead of configure.

Reported-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Reviewed-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSubmittingPatches: give list and maintainer addresses
Junio C Hamano [Wed, 2 Jan 2013 17:31:54 +0000 (09:31 -0800)]
SubmittingPatches: give list and maintainer addresses

We told readers to "send it to the list" (or the maintainer) without
telling what addresses are to be used.  Correct this.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSubmittingPatches: remove overlong checklist
Junio C Hamano [Tue, 1 Jan 2013 23:19:00 +0000 (15:19 -0800)]
SubmittingPatches: remove overlong checklist

The section is no longer a concise checklist.  It also talks about
things that are not covered in the "Long version" text, which means
people need to read both, covering more or less the same thing in
different phrasing.

Fold the details into the main text and remove the section.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogitk: Display important heads even when there are many
Paul Mackerras [Wed, 2 Jan 2013 04:25:29 +0000 (15:25 +1100)]
gitk: Display important heads even when there are many

When there are more than $maxrefs descendant heads to display in the
Branches field of the commit display, we currently just display "many",
which is not very informative.  To make the display more informative,
we now look for "master" and whichever head is currently checked out,
and display them even if there are too many heads to display them all.
The display then looks like "Branches: master and many more (33)" for
instance.

Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agot9020: which is not portable
Torsten Bögershausen [Tue, 1 Jan 2013 21:42:03 +0000 (22:42 +0100)]
t9020: which is not portable

Use type instead

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot9810: Do not use sed -i
Torsten Bögershausen [Tue, 1 Jan 2013 21:40:37 +0000 (22:40 +0100)]
t9810: Do not use sed -i

sed -i is not portable on all systems.  Use sed with different input
and output files.  Utilize a tmp file whenever needed.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogitweb: fix error in sanitize when highlight is enabled
Orgad Shaneh [Sun, 30 Dec 2012 11:52:53 +0000 (13:52 +0200)]
gitweb: fix error in sanitize when highlight is enabled

$1 becomes undef by internal regex, since it has no capture groups.

Match against accpetable control characters using index() instead of a regex.

Signed-off-by: Orgad Shaneh <orgads@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-status: Test --ignored behavior
Antoine Pelisse [Sun, 30 Dec 2012 14:39:01 +0000 (15:39 +0100)]
git-status: Test --ignored behavior

Test all possible use-cases of git-status "--ignored" with the
"--untracked-files" option with values "normal" and "all":

 - An untracked directory is listed as untracked if it has a mix of
   untracked and ignored files in it.  With -uall, ignored/untracked
   files are listed as ignored/untracked.

 - An untracked directory with only ignored files is listed as
   ignored.  With -uall, all files in the directory are listed.

 - An ignored directory is listed as ignored. With -uall, all files
   in the directory are listed as ignored.

 - An ignored and committed directory is listed as ignored if it has
   untracked files.  With -uall, all untracked files in the
   directory are listed as ignored.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: Make git-status --ignored more consistent
Antoine Pelisse [Sun, 30 Dec 2012 14:39:00 +0000 (15:39 +0100)]
dir.c: Make git-status --ignored more consistent

The current behavior of git-status is inconsistent and misleading.
Especially when used with --untracked-files=all option:

 - files ignored in untracked directories will be missing from
   status output.

 - untracked files in committed yet ignored directories are also
   missing.

 - with --untracked-files=normal, untracked directories that
   contains only ignored files are dropped too.

Make the behavior more consistent across all possible use cases:

 - "--ignored --untracked-files=normal" doesn't show each specific
   files but top directory.  It instead shows untracked directories
   that only contains ignored files, and ignored tracked directories
   with untracked files.

 - "--ignored --untracked-files=all" shows all ignored files, either
   because it's in an ignored directory (tracked or untracked), or
   because the file is explicitly ignored.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation: full-ness of a bundle is significant for cloning
Junio C Hamano [Tue, 1 Jan 2013 20:46:15 +0000 (12:46 -0800)]
Documentation: full-ness of a bundle is significant for cloning

Not necessarily every bundle file can be cloned from.  Only the ones
that do not need prerequisites can.

When 1d52b02 (Documentation: minor grammatical fixes and rewording
in git-bundle.txt, 2009-03-22) reworded this paragraph, it lost a
critical hint to tell readers why this particular bundle can be
cloned from.  Resurrect it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMakefile: add USE_WILDMATCH to use wildmatch as fnmatch
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:11 +0000 (09:44 +0700)]
Makefile: add USE_WILDMATCH to use wildmatch as fnmatch

This is similar to NO_FNMATCH but it uses wildmatch instead of
compat/fnmatch. This is an intermediate step to let wildmatch be used
as fnmatch replacement for wider audience before it replaces fnmatch
completely and compat/fnmatch is removed.

fnmatch in test-wildmatch is not impacted by this and is the only
place that NO_FNMATCH or NO_FNMATCH_CASEFOLD remain active when
USE_WILDMATCH is set.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agowildmatch: advance faster in <asterisk> + <literal> patterns
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:10 +0000 (09:44 +0700)]
wildmatch: advance faster in <asterisk> + <literal> patterns

Normally when we match "*X" on "abcX", we call dowild("X", "abcX"),
dowild("X", "bcX"), dowild("X", "cX") and dowild("X", "X"). Only the
last call may have a chance of matching. By skipping the text before
"X", we can eliminate the first three useless calls.

compat, '*/*/*' on linux-2.6.git file list 2000 times, before:
wildmatch 7s 985049us
fnmatch   2s 735541us or 34.26% faster

and after:
wildmatch 4s 492549us
fnmatch   0s 888263us or 19.77% slower

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agowildmatch: make a special case for "*/" with FNM_PATHNAME
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:09 +0000 (09:44 +0700)]
wildmatch: make a special case for "*/" with FNM_PATHNAME

Normally we need recursion for "*". In this case we know that it
matches everything until "/" so we can skip the recursion.

glibc, '*/*/*' on linux-2.6.git file list 2000 times
before:
wildmatch 8s 74513us
fnmatch   1s 97042us or 13.59% faster
after:
wildmatch 3s 521862us
fnmatch   3s 488616us or 99.06% slower

Same test with compat/fnmatch:
wildmatch 8s 110763us
fnmatch   2s 980845us or 36.75% faster
wildmatch 3s 522156us
fnmatch   1s 544487us or 43.85% slower

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotest-wildmatch: add "perf" command to compare wildmatch and fnmatch
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:08 +0000 (09:44 +0700)]
test-wildmatch: add "perf" command to compare wildmatch and fnmatch

It takes a text file, a pattern, a number <n> and pathname flag. Each
line in the text file is matched against the pattern <n> times. If
"pathname" is given, FNM_PATHNAME is used.

test-wildmatch is built with -O2 and tested against glibc 2.14.1 (also
-O2) and compat/fnmatch. The input file is linux-2.6.git file list.
<n> is 2000. The complete command list is at the end.

wildmatch is beaten in the following cases. Apparently it needs some
improvement in FNM_PATHNAME case:

glibc, '*/*/*' with FNM_PATHNAME:
wildmatch 8s 1559us
fnmatch   1s 11877us or 12.65% faster

compat, '*/*/*' with FNM_PATHNAME:
wildmatch 7s 922458us
fnmatch   2s 905111us or 36.67% faster

compat, '*/*/*' without FNM_PATHNAME:
wildmatch 7s 264201us
fnmatch   2s 1897us or 27.56% faster

compat, '[a-z]*/[a-z]*/[a-z]*' with FNM_PATHNAME:
wildmatch 8s 742827us
fnmatch   0s 922943us or 10.56% faster

compat, '[a-z]*/[a-z]*/[a-z]*' without FNM_PATHNAME:
wildmatch 8s 284520us
fnmatch   0s 6936us or 0.08% faster

The rest of glibc numbers
-------------------------

'Documentation/*'
wildmatch 1s 529479us
fnmatch   1s 98263us or 71.81% slower

'drivers/*'
wildmatch 1s 988288us
fnmatch   1s 192049us or 59.95% slower

'Documentation/*' pathname
wildmatch 1s 557507us
fnmatch   1s 93696us or 70.22% slower

'drivers/*' pathname
wildmatch 2s 161626us
fnmatch   1s 230372us or 56.92% slower

'[Dd]ocu[Mn]entation/*'
wildmatch 1s 776581us
fnmatch   1s 471693us or 82.84% slower

'[Dd]o?u[Mn]en?ati?n/*'
wildmatch 1s 770770us
fnmatch   1s 555727us or 87.86% slower

'[Dd]o?u[Mn]en?ati?n/*' pathname
wildmatch 1s 783507us
fnmatch   1s 537029us or 86.18% slower

'[A-Za-z][A-Za-z]??*'
wildmatch 4s 110386us
fnmatch   4s 926306us or 119.85% slower

'[A-Za-z][A-Za-z]??'
wildmatch 3s 918114us
fnmatch   3s 686175us or 94.08% slower

'[A-Za-z][A-Za-z]??*' pathname
wildmatch 4s 453746us
fnmatch   4s 955856us or 111.27% slower

'[A-Za-z][A-Za-z]??' pathname
wildmatch 3s 896646us
fnmatch   3s 733828us or 95.82% slower

'*/*/*'
wildmatch 7s 287985us
fnmatch   1s 74083us or 14.74% slower

'[a-z]*/[a-z]*/[a-z]*' pathname
wildmatch 8s 796659us
fnmatch   1s 568409us or 17.83% slower

'[a-z]*/[a-z]*/[a-z]*'
wildmatch 8s 316559us
fnmatch   3s 430652us or 41.25% slower

The rest of compat numbers
--------------------------

'Documentation/*'
wildmatch 1s 520389us
fnmatch   0s 62579us or 4.12% slower

'drivers/*'
wildmatch 1s 955354us
fnmatch   0s 190109us or 9.72% slower

'Documentation/*' pathname
wildmatch 1s 561675us
fnmatch   0s 55336us or 3.54% slower

'drivers/*' pathname
wildmatch 2s 106100us
fnmatch   0s 219680us or 10.43% slower

'[Dd]ocu[Mn]entation/*'
wildmatch 1s 750810us
fnmatch   0s 542721us or 31.00% slower

'[Dd]o?u[Mn]en?ati?n/*'
wildmatch 1s 724791us
fnmatch   0s 538948us or 31.25% slower

'[Dd]o?u[Mn]en?ati?n/*' pathname
wildmatch 1s 731403us
fnmatch   0s 537474us or 31.04% slower

'[A-Za-z][A-Za-z]??*'
wildmatch 4s 28555us
fnmatch   1s 67297us or 26.49% slower

'[A-Za-z][A-Za-z]??'
wildmatch 3s 838279us
fnmatch   0s 880005us or 22.93% slower

'[A-Za-z][A-Za-z]??*' pathname
wildmatch 4s 379476us
fnmatch   1s 55643us or 24.10% slower

'[A-Za-z][A-Za-z]??' pathname
wildmatch 3s 830910us
fnmatch   0s 849699us or 22.18% slower

The following commands are used:

LANG=C ./test-wildmatch perf /tmp/filelist.txt 'Documentation/*' 2000
LANG=C ./test-wildmatch perf /tmp/filelist.txt 'drivers/*' 2000
LANG=C ./test-wildmatch perf /tmp/filelist.txt 'Documentation/*' 2000 pathname
LANG=C ./test-wildmatch perf /tmp/filelist.txt 'drivers/*' 2000 pathname
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[Dd]ocu[Mn]entation/*' 2000
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[Dd]o?u[Mn]en?ati?n/*' 2000
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[Dd]o?u[Mn]en?ati?n/*' 2000 pathname
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[A-Za-z][A-Za-z]??*' 2000
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[A-Za-z][A-Za-z]??' 2000
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[A-Za-z][A-Za-z]??*' 2000 pathname
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[A-Za-z][A-Za-z]??' 2000 pathname
LANG=C ./test-wildmatch perf /tmp/filelist.txt '*/*/*' 2000
LANG=C ./test-wildmatch perf /tmp/filelist.txt '*/*/*' 2000 pathname
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[a-z]*/[a-z]*/[a-z]*' 2000 pathname
LANG=C ./test-wildmatch perf /tmp/filelist.txt '[a-z]*/[a-z]*/[a-z]*' 2000

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agowildmatch: support "no FNM_PATHNAME" mode
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:07 +0000 (09:44 +0700)]
wildmatch: support "no FNM_PATHNAME" mode

So far, wildmatch() has always honoured directory boundary and there
was no way to turn it off. Make it behave more like fnmatch() by
requiring all callers that want the FNM_PATHNAME behaviour to pass
that in the equivalent flag WM_PATHNAME. Callers that do not specify
WM_PATHNAME will get wildcards like ? and * in their patterns matched
against '/', just like not passing FNM_PATHNAME to fnmatch().

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agowildmatch: replace variable 'special' with better named ones
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:04 +0000 (09:44 +0700)]
wildmatch: replace variable 'special' with better named ones

'special' is too generic and is used for two different purposes.
Replace it with 'match_slash' to indicate "**" pattern and 'negated'
for "[!...]" and "[^...]".

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agowildmatch: make dowild() take arbitrary flags
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:06 +0000 (09:44 +0700)]
wildmatch: make dowild() take arbitrary flags

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocompat/fnmatch: respect NO_FNMATCH* even on glibc
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:03 +0000 (09:44 +0700)]
compat/fnmatch: respect NO_FNMATCH* even on glibc

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agowildmatch: rename constants and update prototype
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:05 +0000 (09:44 +0700)]
wildmatch: rename constants and update prototype

- All exported constants now have a prefix WM_
- Do not rely on FNM_* constants, use the WM_ counterparts
- Remove TRUE and FALSE to follow Git's coding style
- While at it, turn flags type from int to unsigned int
- Add an (unused yet) argument to carry extra information
  so that we don't have to change the prototype again later
  when we need to pass other stuff to wildmatch

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agowildmatch: fix "**" special case
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 02:44:02 +0000 (09:44 +0700)]
wildmatch: fix "**" special case

"**" is adjusted to only be effective when surrounded by slashes, in
40bbee0 (wildmatch: adjust "**" behavior - 2012-10-15). Except that
the commit did it wrong:

1. when it checks for "the preceding slash unless ** is at the
   beginning", it compares to wrong pointer. It should have compared
   to the beginning of the pattern, not the text.

2. prev_p points to the character before "**", not the first "*". The
   correct comparison must be "prev_p < pattern" or
   "prev_p + 1 == pattern", not "prev_p == pattern".

3. The pattern must be surrounded by slashes unless it's at the
   beginning or the end of the pattern. We do two checks: one for the
   preceding slash and one the trailing slash. Both checks must be
   met. The use of "||" is wrong.

This patch fixes all above.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSubmittingPatches: mention subsystems with dedicated repositories
Junio C Hamano [Tue, 1 Jan 2013 22:37:56 +0000 (14:37 -0800)]
SubmittingPatches: mention subsystems with dedicated repositories

These were only mentioned in periodical "A note from the maintainer"
posting and not in the documentation suite.  SubmittingPatches has a
section to help contributors decide on what commit to base their
changes, which is the most suitable place for this information.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSubmittingPatches: who am I and who cares?
Junio C Hamano [Tue, 1 Jan 2013 22:35:22 +0000 (14:35 -0800)]
SubmittingPatches: who am I and who cares?

The introductory text in the "long version" talks about the origin
of this document with "I started ...", but it is unclear who that I
is, and more importantly, it is not interesting how it was started.

Just state the purpose of the document to help readers decide if it
is releavant to them.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation: correct example restore from bundle
Kirill Brilliantov [Tue, 1 Jan 2013 13:54:44 +0000 (17:54 +0400)]
Documentation: correct example restore from bundle

Because the bundle created in the example does not record HEAD, "git
clone" will not check out the files to the working tree:

    $ git clone pr.bundle q/
    Cloning into 'q'...
    Receiving objects: 100% (619/619), 13.52 MiB | 18.74 MiB/s, done.
    Resolving deltas: 100% (413/413), done.
    warning: remote HEAD refers to nonexistent ref, unable to checkout.

Avoid alarming the readers by adding "-b master" to the example.  A
better fix may be to arrange the bundle created in the earlier step
to record HEAD, so that it can be cloned without this workaround.

Signed-off-by: Brilliantov Kirill Vladimirovich <brilliantov@inbox.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoconfig.txt: a few lines about branch.<name>.description
Nguyễn Thái Ngọc Duy [Tue, 1 Jan 2013 09:30:53 +0000 (16:30 +0700)]
config.txt: a few lines about branch.<name>.description

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogitk: Improve display of list of nearby tags and heads
Paul Mackerras [Tue, 1 Jan 2013 12:08:12 +0000 (23:08 +1100)]
gitk: Improve display of list of nearby tags and heads

This provides a control in the preferences pane for the limit on
how many tags or heads are displayed with the commit details under
the Branch(es), Precedes and Follows headings.  This limit is now
saved in ~/.gitk so that changes are persistent.

This also applies word-wrapping to the list of tags or heads under
the Branch, Precedes and Follows headings, so that long lists are
more readable.

Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agogitk: Fix display of branch names on some commits
Paul Mackerras [Tue, 1 Jan 2013 05:51:03 +0000 (16:51 +1100)]
gitk: Fix display of branch names on some commits

Sometimes the code that divides commits up into arcs creates two
successive arcs, but the commit between them (the commit at the end
of the first arc and the beginning of the second arc) has only one
parent and one child.  If that commit is also the head of one or more
branches, those branches get omitted from the "Branches" field in the
commit display.

The omission occurs because the commit gets erroneously identified as
a commit which is part-way along an arc in [descheads].  This fixes it
by changing the test to look at the arcouts array, which only contains
elements for the commits at the start or end of an arc.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
11 years agoGit 1.8.1
Junio C Hamano [Mon, 31 Dec 2012 22:24:22 +0000 (14:24 -0800)]
Git 1.8.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge --no-edit: do not credit people involved in the side branch
Junio C Hamano [Fri, 28 Dec 2012 23:29:31 +0000 (15:29 -0800)]
merge --no-edit: do not credit people involved in the side branch

The credit lines "By" and "Via" to credit authors and committers for
their contributions on the side branch are meant as a hint to the
integrator to decide whom to mention in the log message text.  After
the integrator saves the message in the editor, they are meant to go
away and that is why they are commented out.

When a merge is recorded without editing the generated message,
however, its contents do not go through the normal stripspace()
and these lines are left in the merge.

Stop producing them when we know the merge is going to be recorded
without editing, i.e. when --no-edit is given.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoUse longer alias names in subdirectory tests
Aaron Schrab [Fri, 28 Dec 2012 23:03:06 +0000 (18:03 -0500)]
Use longer alias names in subdirectory tests

When testing aliases in t/t1020-subdirectory.sh use longer names so that
they're less likely to conflict with a git-* command somewhere in the
$PATH.

I have a git-ss command in my path which prevents the 'ss' alias from
being used.  This command will always fail for git.git, causing the test
to fail.  Even if the command succeeded, that would be a false success
for the test since the alias wasn't actually used.  A longer, more
descriptive name will make it much less likely that somebody has a
command in their $PATH which will shadow the alias created for the test.

While here, use a longer name for the 'test' alias as well since that is
also short and meaningful enough to make it not unlikely that somebody
would have a command in their $PATH which will shadow that as well.

Signed-off-by: Aaron Schrab <aaron@schrab.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: rename free_excludes() to clear_exclude_list()
Adam Spiers [Thu, 27 Dec 2012 02:32:29 +0000 (02:32 +0000)]
dir.c: rename free_excludes() to clear_exclude_list()

It is clearer to use a 'clear_' prefix for functions which empty
and deallocate the contents of a data structure without freeing
the structure itself, and a 'free_' prefix for functions which
also free the structure itself.

http://article.gmane.org/gmane.comp.version-control.git/206128

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: refactor is_path_excluded()
Adam Spiers [Thu, 27 Dec 2012 02:32:28 +0000 (02:32 +0000)]
dir.c: refactor is_path_excluded()

In a similar way to the previous commit, this extracts a new helper
function last_exclude_matching_path() which return the last
exclude_list element which matched, or NULL if no match was found.
is_path_excluded() becomes a wrapper around this, and just returns 0
or 1 depending on whether any matching exclude_list element was found.

This allows callers to find out _why_ a given path was excluded,
rather than just whether it was or not, paving the way for a new git
sub-command which allows users to test their exclude lists from the
command line.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: refactor is_excluded()
Adam Spiers [Thu, 27 Dec 2012 02:32:27 +0000 (02:32 +0000)]
dir.c: refactor is_excluded()

In a similar way to the previous commit, this extracts a new helper
function last_exclude_matching() which returns the last exclude_list
element which matched, or NULL if no match was found.  is_excluded()
becomes a wrapper around this, and just returns 0 or 1 depending on
whether any matching exclude_list element was found.

This allows callers to find out _why_ a given path was excluded,
rather than just whether it was or not, paving the way for a new git
sub-command which allows users to test their exclude lists from the
command line.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: refactor is_excluded_from_list()
Adam Spiers [Thu, 27 Dec 2012 02:32:26 +0000 (02:32 +0000)]
dir.c: refactor is_excluded_from_list()

The excluded function uses a new helper function called
last_exclude_matching_from_list() to perform the inner loop over all of
the exclude patterns.  The helper just tells us whether the path is
included, excluded, or undecided.

However, it may be useful to know _which_ pattern was triggered.  So
let's pass out the entire exclude match, which contains the status
information we were already passing out.

Further patches can make use of this.

This is a modified forward port of a patch from 2009 by Jeff King:
http://article.gmane.org/gmane.comp.version-control.git/108815

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: rename excluded() to is_excluded()
Adam Spiers [Thu, 27 Dec 2012 02:32:25 +0000 (02:32 +0000)]
dir.c: rename excluded() to is_excluded()

Continue adopting clearer names for exclude functions.  This is_*
naming pattern for functions returning booleans was discussed here:

http://thread.gmane.org/gmane.comp.version-control.git/204661/focus=204924

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: rename excluded_from_list() to is_excluded_from_list()
Adam Spiers [Thu, 27 Dec 2012 02:32:24 +0000 (02:32 +0000)]
dir.c: rename excluded_from_list() to is_excluded_from_list()

Continue adopting clearer names for exclude functions.  This 'is_*'
naming pattern for functions returning booleans was discussed here:

http://thread.gmane.org/gmane.comp.version-control.git/204661/focus=204924

Also adjust their callers as necessary.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: rename path_excluded() to is_path_excluded()
Adam Spiers [Thu, 27 Dec 2012 02:32:23 +0000 (02:32 +0000)]
dir.c: rename path_excluded() to is_path_excluded()

Start adopting clearer names for exclude functions.  This 'is_*'
naming pattern for functions returning booleans was agreed here:

http://thread.gmane.org/gmane.comp.version-control.git/204661/focus=204924

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodir.c: rename cryptic 'which' variable to more consistent name
Adam Spiers [Thu, 27 Dec 2012 02:32:22 +0000 (02:32 +0000)]
dir.c: rename cryptic 'which' variable to more consistent name

'el' is only *slightly* less cryptic, but is already used as the
variable name for a struct exclude_list pointer in numerous other
places, so this reduces the number of cryptic variable names in use by
one :-)

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoImprove documentation and comments regarding directory traversal API
Adam Spiers [Thu, 27 Dec 2012 02:32:21 +0000 (02:32 +0000)]
Improve documentation and comments regarding directory traversal API

traversal API has a few potentially confusing properties.  These
comments clarify a few key aspects and will hopefully make it easier
to understand for other newcomers in the future.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoapi-directory-listing.txt: update to match code
Adam Spiers [Thu, 27 Dec 2012 02:32:20 +0000 (02:32 +0000)]
api-directory-listing.txt: update to match code

7c4c97c0ac turned the flags in struct dir_struct into a single bitfield
variable, but forgot to update this document.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoRemove the suggestion to use parsecvs, which is currently broken.
Eric S. Raymond [Fri, 28 Dec 2012 16:20:25 +0000 (11:20 -0500)]
Remove the suggestion to use parsecvs, which is currently broken.

The parsecvs code has been neglected for a long time, and the only
public version does not even build correctly.  I have been handed
control of the project and intend to fix this, but until I do it
cannot be recommended.

Also, the project URL given for Subversion needed to be updated
to follow their site move.

Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoAdd checks to Python scripts for version dependencies.
Eric S. Raymond [Fri, 28 Dec 2012 16:40:59 +0000 (11:40 -0500)]
Add checks to Python scripts for version dependencies.

Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'so/prompt-command'
Junio C Hamano [Fri, 28 Dec 2012 00:00:07 +0000 (16:00 -0800)]
Merge branch 'so/prompt-command'

Finishing touches...

* so/prompt-command:
  make __git_ps1 accept a third parameter in pcmode

11 years agoSync with 1.8.0.3
Junio C Hamano [Thu, 27 Dec 2012 23:59:42 +0000 (15:59 -0800)]
Sync with 1.8.0.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.8.0.3
Junio C Hamano [Thu, 27 Dec 2012 23:57:20 +0000 (15:57 -0800)]
Git 1.8.0.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit(1): show link to contributor summary page
Junio C Hamano [Wed, 12 Dec 2012 18:06:24 +0000 (10:06 -0800)]
git(1): show link to contributor summary page

We earlier removed a link to list of contributors that pointed to a
defunct page; let's use a working one from Ohloh.net to replace it
instead.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'sl/maint-git-svn-docs' into maint
Junio C Hamano [Thu, 27 Dec 2012 23:38:34 +0000 (15:38 -0800)]
Merge branch 'sl/maint-git-svn-docs' into maint

* sl/maint-git-svn-docs:
  git-svn: Note about tags.
  git-svn: Expand documentation for --follow-parent
  git-svn: Recommend use of structure options.
  git-svn: Document branches with at-sign(@).

11 years agogit-svn: Note about tags.
Sebastian Leske [Fri, 23 Nov 2012 07:29:38 +0000 (08:29 +0100)]
git-svn: Note about tags.

Document that 'git svn' will import SVN tags as branches.

Signed-off-by: Sebastian Leske <sebastian.leske@sleske.name>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-svn: Expand documentation for --follow-parent
Sebastian Leske [Fri, 30 Nov 2012 07:16:30 +0000 (08:16 +0100)]
git-svn: Expand documentation for --follow-parent

Describe what the option --follow-parent does, and what happens if it is
set or unset.

Signed-off-by: Sebastian Leske <sebastian.leske@sleske.name>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-svn: Recommend use of structure options.
Sebastian Leske [Fri, 30 Nov 2012 07:16:30 +0000 (08:16 +0100)]
git-svn: Recommend use of structure options.

Document that when using git svn, one should usually either use the
directory structure options to import branches as branches, or only
import one subdirectory. The default behaviour of cloning all branches
and tags as subdirectories in the working copy is usually not what the
user wants.

Signed-off-by: Sebastian Leske <sebastian.leske@sleske.name>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-svn: Document branches with at-sign(@).
Sebastian Leske [Fri, 30 Nov 2012 07:16:30 +0000 (08:16 +0100)]
git-svn: Document branches with at-sign(@).

git svn sometimes creates branches with an at-sign in the name
(branchname@revision). These branches confuse many users and it is a FAQ
why they are created. Document when git svn creates them.

Signed-off-by: Sebastian Leske <sebastian.leske@sleske.name>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'gb/maint-doc-svn-log-window-size' into maint
Junio C Hamano [Thu, 27 Dec 2012 23:34:37 +0000 (15:34 -0800)]
Merge branch 'gb/maint-doc-svn-log-window-size' into maint

* branch 'gb/maint-doc-svn-log-window-size':
  Document git-svn fetch --log-window-size parameter

11 years agoMerge branch 'km/maint-doc-git-reset' into maint
Junio C Hamano [Thu, 27 Dec 2012 23:32:27 +0000 (15:32 -0800)]
Merge branch 'km/maint-doc-git-reset' into maint

* branch 'km/maint-doc-git-reset':
  doc: git-reset: make "<mode>" optional

11 years agogit-remote-helpers.txt: document invocation before input format
Max Horn [Tue, 27 Nov 2012 23:03:21 +0000 (00:03 +0100)]
git-remote-helpers.txt: document invocation before input format

In the distant past, the order things were documented was
'Invocation', 'Commands', 'Capabilities', ...

Then it was decided that before giving a list of Commands, there
should be an overall description of the 'Input format', which was
a wise decision. However, this description was put as the very
first thing, with the rationale that any implementor would want
to know that first.

However, it seems an implementor would actually first need to
know how the remote helper will be invoked, so moving
'Invocation' to the front again seems logical. Moreover, we now
don't switch from discussing the input format to the invocation
style and then back to input related stuff.

Signed-off-by: Max Horn <max@quendi.de>
Acked-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jk/avoid-mailto-invalid-in-doc' into maint
Junio C Hamano [Thu, 27 Dec 2012 23:27:46 +0000 (15:27 -0800)]
Merge branch 'jk/avoid-mailto-invalid-in-doc' into maint

* jk/avoid-mailto-invalid-in-doc:
  Documentation: don't link to example mail addresses

11 years agoMerge branch 'tj/maint-doc-commit-sign' into maint
Junio C Hamano [Thu, 27 Dec 2012 23:24:51 +0000 (15:24 -0800)]
Merge branch 'tj/maint-doc-commit-sign' into maint

* branch 'tj/maint-doc-commit-sign':
  Add -S, --gpg-sign option to manpage of "git commit"

11 years agoDocumentation: move diff.wordRegex from config.txt to diff-config.txt
Ramkumar Ramachandra [Tue, 13 Nov 2012 15:42:44 +0000 (21:12 +0530)]
Documentation: move diff.wordRegex from config.txt to diff-config.txt

19299a8 (Documentation: Move diff.<driver>.* from config.txt to
diff-config.txt, 2011-04-07) moved the diff configuration options to
diff-config.txt, but forgot about diff.wordRegex, which was left
behind in config.txt.  Fix this.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoRemove Documentation/pt_BR/gittutorial.txt
Thomas Ackermann [Thu, 27 Dec 2012 14:15:52 +0000 (15:15 +0100)]
Remove Documentation/pt_BR/gittutorial.txt

This file is rather outdated and IMHO shouldn't be there in the first place.
(If there are translations of the Git documentation they are better be kept
separate from the original documentation.)

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomergetools/p4merge: Honor $TMPDIR for the /dev/null placeholder
David Aguilar [Thu, 27 Dec 2012 00:45:29 +0000 (16:45 -0800)]
mergetools/p4merge: Honor $TMPDIR for the /dev/null placeholder

Use $TMPDIR when creating the /dev/null placeholder for p4merge.
This prevents users from finding a seemingly random untracked file
in their worktree.

This is different than what mergetool does with $LOCAL and
$REMOTE because those files exist to aid users when resolving
merges.  p4merge's /dev/null placeholder is not helpful in that
situation so it is sensible to keep it out of the worktree.

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>
11 years agomerge-tree: fix d/f conflicts
Junio C Hamano [Thu, 13 Dec 2012 23:51:29 +0000 (15:51 -0800)]
merge-tree: fix d/f conflicts

The previous commit documented two known breakages revolving around
a case where one side flips a tree into a blob (or vice versa),
where the original code simply gets confused and feeds a mixture of
trees and blobs into either the recursive merge-tree (and recursing
into the blob will fail) or three-way merge (and merging tree contents
together with blobs will fail).

Fix it by feeding trees (and only trees) into the recursive
merge-tree machinery and blobs (and only blobs) into the three-way
content level merge machinery separately; when this happens, the
entire merge has to be marked as conflicting at the structure level.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge-tree: add comments to clarify what these functions are doing
Junio C Hamano [Fri, 7 Dec 2012 00:15:45 +0000 (16:15 -0800)]
merge-tree: add comments to clarify what these functions are doing

Rename the "branch1" parameter given to resolve() to "ours", to
clarify what is going on.  Also, annotate the unresolved_directory()
function with some comments to show what decisions are made in each
step, and highlight two bugs that need to be fixed.

Add two tests to t4300 to illustrate these bugs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge-tree: lose unused "resolve_directories"
Junio C Hamano [Thu, 6 Dec 2012 23:53:41 +0000 (15:53 -0800)]
merge-tree: lose unused "resolve_directories"

This option is always set; simplify.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge-tree: lose unused "flags" from merge_list
Junio C Hamano [Thu, 6 Dec 2012 23:41:04 +0000 (15:41 -0800)]
merge-tree: lose unused "flags" from merge_list

Drop the unused field from the structure.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomake __git_ps1 accept a third parameter in pcmode
Simon Oosthoek [Wed, 26 Dec 2012 19:15:05 +0000 (20:15 +0100)]
make __git_ps1 accept a third parameter in pcmode

The optional third parameter when __git_ps1 is used in
PROMPT_COMMAND mode as format string for printf to further
customize the way the git status string is embedded in the
user's PS1 prompt.

Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>