Commit Graph

31228 Commits

Author SHA1 Message Date
David Aguilar
950b5680bd 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>
2012-12-26 18:13:15 -08:00
Simon Oosthoek
126b59692b 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>
2012-12-26 11:52:36 -08:00
Junio C Hamano
8666df02da t9200: let "cvs init" create the test repository
Some platforms (e.g. NetBSD 6.0) seem to configure their CVS to
allow "cvs init" in an existing directory only to members of
"cvsadmin".

Instead of preparing an empty directory and then running "cvs init"
on it, let's run "cvs init" and let it create the necessary
directory.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-24 17:42:07 -08:00
Junio C Hamano
86c3e6ed51 Merge branch 'maint' 2012-12-22 20:40:07 -08:00
Junio C Hamano
c2999adcd5 Merge branch 'jc/doc-diff-blobs' into maint
* jc/doc-diff-blobs:
  Documentation: Describe "git diff <blob> <blob>" separately
2012-12-22 20:38:07 -08:00
Junio C Hamano
a7b5e9141e Merge branch 'cr/doc-checkout-branch' into maint
* cr/doc-checkout-branch:
  Documentation/git-checkout.txt: document 70c9ac2 behavior
  Documentation/git-checkout.txt: clarify usage
2012-12-22 20:38:02 -08:00
Junio C Hamano
2b1965863b Merge branch 'ta/api-index-doc' into maint
* ta/api-index-doc:
  Remove misleading date from api-index-skel.txt
2012-12-22 20:37:42 -08:00
Junio C Hamano
ffcd76bda9 Merge branch 'as/doc-for-devs' into maint
* as/doc-for-devs:
  Documentation: move support for old compilers to CodingGuidelines
  SubmittingPatches: add convention of prefixing commit messages
2012-12-22 20:37:33 -08:00
Junio C Hamano
e970ec356b Merge branch 'sl/readme-gplv2' into maint
* sl/readme-gplv2:
  README: it does not matter who the current maintainer is
  README: Git is released under the GPLv2, not just "the GPL"
2012-12-22 20:37:27 -08:00
Junio C Hamano
21b340181b Merge branch 'jc/fetch-tags-doc' into maint
* jc/fetch-tags-doc:
  fetch --tags: clarify documentation
2012-12-22 20:37:22 -08:00
Junio C Hamano
df54d59566 Merge branch 'nd/index-format-doc' into maint
* nd/index-format-doc:
  index-format.txt: clarify what is "invalid"
2012-12-22 20:37:09 -08:00
Junio C Hamano
ccc3ae799c Merge branch 'jk/mailmap-cleanup' into maint
* jk/mailmap-cleanup:
  contrib: update stats/mailmap script
  .mailmap: normalize emails for Linus Torvalds
  .mailmap: normalize emails for Jeff King
  .mailmap: fix broken entry for Martin Langhoff
  .mailmap: match up some obvious names/emails
2012-12-22 20:36:42 -08:00
Junio C Hamano
66afe50b43 Merge branch 'ta/doc-cleanup' into maint
* ta/doc-cleanup:
  Documentation: build html for all files in technical and howto
  Documentation/howto: convert plain text files to asciidoc
  Documentation/technical: convert plain text files to asciidoc
  Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
  Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
  Split over-long synopsis in git-fetch-pack.txt into several lines
2012-12-22 20:35:34 -08:00
Thomas Ackermann
854dfda8be Sort howto documents in howto-index.txt
Howto documents in howto-index.txt were listed in a rather
random order. So better sort them.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-22 20:26:56 -08:00
Michael Schubert
248a8849fa git-subtree: fix typo in manpage
Signed-off-by: Michael Schubert <mschub@elegosoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-22 20:21:48 -08:00
Michael Schubert
f228dade3d git-subtree: ignore git-subtree executable
Signed-off-by: Michael Schubert <mschub@elegosoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-22 20:21:26 -08:00
Junio C Hamano
b3cf6f3b8d Git 1.8.1-rc3
The changes since -rc2 are mostly documentation updates.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-22 11:48:47 -08:00
Junio C Hamano
b10c4add03 Merge branch 'ta/new-command-howto'
* ta/new-command-howto:
  Move ./technical/api-command.txt to ./howto/new-command.txt
2012-12-21 15:19:25 -08:00
Junio C Hamano
814a1924b4 Merge branch 'jc/doc-diff-blobs'
"git diff <blob> <blob>" was not documented and was only hinted as
an extension to "git diff <commit> <commit> -- <pathspec>", but
comparison between two blobs are more special than that.  It does
not take any pathspec to begin with.

* jc/doc-diff-blobs:
  Documentation: Describe "git diff <blob> <blob>" separately
2012-12-21 15:19:13 -08:00
Junio C Hamano
51bf6bea51 Merge branch 'cr/doc-checkout-branch'
Document the magic "git checkout <no-such-branch>" hack to create
local branch out of a remote tracking branch that hasn't been
documented so far.

* cr/doc-checkout-branch:
  Documentation/git-checkout.txt: document 70c9ac2 behavior
  Documentation/git-checkout.txt: clarify usage
2012-12-21 15:19:08 -08:00
Junio C Hamano
6600dcbd30 Merge branch 'ta/api-index-doc'
* ta/api-index-doc:
  Remove misleading date from api-index-skel.txt
2012-12-21 15:19:04 -08:00
Junio C Hamano
53096bf0af Merge branch 'jk/avoid-mailto-invalid-in-doc'
Avoids invalid sample e-mail addresses from becoming mailto links
in the formatted output.

* jk/avoid-mailto-invalid-in-doc:
  Documentation: don't link to example mail addresses
2012-12-21 15:18:57 -08:00
Junio C Hamano
c2c6a70a54 Merge branch 'as/doc-for-devs'
It might be a better idea to move the text the bottom one adds to
the extended description from the quick checklist part.

* as/doc-for-devs:
  Documentation: move support for old compilers to CodingGuidelines
  SubmittingPatches: add convention of prefixing commit messages
2012-12-21 15:18:47 -08:00
Junio C Hamano
19b4520ba9 Merge branch 'sl/readme-gplv2'
Clarify that the project as a whole is GPLv2 only, with some parts
borrowed under different licenses that are compatible with GPLv2.

* sl/readme-gplv2:
  README: it does not matter who the current maintainer is
  README: Git is released under the GPLv2, not just "the GPL"
2012-12-21 15:18:41 -08:00
Junio C Hamano
73cf1b540e Merge branch 'jc/fetch-tags-doc'
"git fetch --tags" was explained as if it were "git fetch
--no-no-tags", which is not the case, causing confusion.

* jc/fetch-tags-doc:
  fetch --tags: clarify documentation
2012-12-21 15:18:35 -08:00
Junio C Hamano
d34ccd6df7 Merge branch 'nd/index-format-doc'
* nd/index-format-doc:
  index-format.txt: clarify what is "invalid"
2012-12-21 15:18:32 -08:00
Junio C Hamano
80c78e11a0 Merge branch 'sl/git-svn-docs'
* sl/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(@).
2012-12-21 15:18:27 -08:00
Junio C Hamano
675a0fe297 Merge branch 'jk/mailmap-cleanup'
Update various entries in our .mailmap file.

* jk/mailmap-cleanup:
  contrib: update stats/mailmap script
  .mailmap: normalize emails for Linus Torvalds
  .mailmap: normalize emails for Jeff King
  .mailmap: fix broken entry for Martin Langhoff
  .mailmap: match up some obvious names/emails
2012-12-21 15:18:20 -08:00
Thomas Ackermann
81670e9bfc Move ./technical/api-command.txt to ./howto/new-command.txt
The contents of this document does not describe any particular API, but
is more about the way to add a new command, which belongs to the "How To"
section of the documentation suite.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-21 10:35:53 -08:00
Rene Bredlau
75e9a405d4 http.c: Avoid username prompt for certifcate credentials
If sslCertPasswordProtected is set to true do not ask for username to decrypt rsa key. This question is pointless, the key is only protected by a password. Internaly the username is simply set to "".

Signed-off-by: Rene Bredlau <git@unrelated.de>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-21 10:19:40 -08:00
Jeff King
b3f1280ec7 refs: do not use cached refs in repack_without_ref
When we delete a ref that is packed, we rewrite the whole
packed-refs file and simply omit the ref that no longer
exists. However, we base the rewrite on whatever happens to
be in our refs cache, not what is necessarily on disk. That
opens us up to a race condition if another process is
simultaneously packing the refs, as we will overwrite their
newly-made pack-refs file with our potentially stale data,
losing commits.

You can demonstrate the race like this:

  # setup some repositories
  git init --bare parent &&
  (cd parent && git config core.logallrefupdates true) &&
  git clone parent child &&
  (cd child && git commit --allow-empty -m base)

  # in one terminal, repack the refs repeatedly
  cd parent &&
  while true; do
	git pack-refs --all
  done

  # in another terminal, simultaneously push updates to
  # master, and create and delete an unrelated ref
  cd child &&
  while true; do
	git push origin HEAD:newbranch &&
	git commit --allow-empty -m foo
	us=`git rev-parse master` &&
	git push origin master &&
	git push origin :newbranch &&
	them=`git --git-dir=../parent rev-parse master` &&
	if test "$them" != "$us"; then
		echo >&2 "$them" != "$us"
		exit 1
	fi
  done

In many cases the two processes will conflict over locking
the packed-refs file, and the deletion of newbranch will
simply fail.  But eventually you will hit the race, which
happens like this:

  1. We push a new commit to master. It is already packed
     (from the looping pack-refs call). We write the new
     value (let us call it B) to $GIT_DIR/refs/heads/master,
     but the old value (call it A) remains in the
     packed-refs file.

  2. We push the deletion of newbranch, spawning a
     receive-pack process. Receive-pack advertises all refs
     to the client, causing it to iterate over each ref; it
     caches the packed refs in memory, which points at the
     stale value A.

  3. Meanwhile, a separate pack-refs process is running. It
     runs to completion, updating the packed-refs file to
     point master at B, and deleting $GIT_DIR/refs/heads/master
     which also pointed at B.

  4. Back in the receive-pack process, we get the
     instruction to delete :newbranch. We take a lock on
     packed-refs (which works, as the other pack-refs
     process has already finished). We then rewrite the
     contents using the cached refs, which contain the stale
     value A.

The resulting packed-refs file points master once again at
A. The loose ref which would override it to point at B was
deleted (rightfully) in step 3. As a result, master now
points at A. The only trace that B ever existed in the
parent is in the reflog: the final entry will show master
moving from A to B, even though the ref still points at A
(so you can detect this race after the fact, because the
next reflog entry will move from A to C).

We can fix this by invalidating the packed-refs cache after
we have taken the lock. This means that we will re-read the
packed-refs file, and since we have the lock, we will be
sure that what we read will be atomically up-to-date when we
write (it may be out of date with respect to loose refs, but
that is OK, as loose refs take precedence).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-21 08:10:22 -08:00
Adam Spiers
b73d9a2363 tests: paint unexpectedly fixed known breakages in bold red
Change color of unexpectedly fixed known breakages to bold red.  An
unexpectedly passing test indicates that the test code is somehow
broken or out of sync with the code it is testing.  Either way this is
an error which is potentially as bad as a failing test, and as such is
no longer portrayed as a pass in the output.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-20 14:22:12 -08:00
Adam Spiers
5ebf89e886 tests: test the test framework more thoroughly
Add 5 new full test suite runs each with a different number of
passing/failing/broken/fixed tests, in order to ensure that the
correct exit code and output are generated in each case.  As before,
these are run in a subdirectory to avoid disrupting the metrics for
the parent tests.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-20 14:22:12 -08:00
Adam Spiers
565b6fa87b tests: refactor mechanics of testing in a sub test-lib
This will allow us to test the test framework more thoroughly
without disrupting the top-level test metrics.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-20 14:22:12 -08:00
Adam Spiers
0a6d4751da tests: change info messages from yellow/brown to cyan
Now that we've adopted a "traffic lights" coloring scheme, yellow is
used for warning messages, so we need to re-color info messages to
something less alarmist.  Blue is a universal color for informational
messages; however we are using that for skipped tests in order to
align with the color schemes of other test suites.  Therefore we use
cyan which is also blue-ish, but visually distinct from blue.

This was suggested on the list a while ago and no-one raised any
objections:

    http://thread.gmane.org/gmane.comp.version-control.git/205675/focus=205966

An earlier iteration of this patch used bold cyan, but the point of
this change is to make them less alarming; let's drop the boldness.

Also paint the message to report skipping the whole thing via
GIT_SKIP_TESTS mechanism in the same color as the "info" color
that is used on the final summary line for the entire script.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-20 14:22:12 -08:00
Adam Spiers
b8fc855a78 tests: paint skipped tests in blue
Skipped tests indicate incomplete test coverage.  Whilst this is not a
test failure or other error, it's still not a complete success.

Other testsuite related software like automake, autotest and prove
seem to use blue for skipped tests, so let's follow suit.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-20 14:22:12 -08:00
Adam Spiers
e8e5195573 tests: paint known breakages in yellow
Yellow seems a more appropriate color than bold green when
considering the universal traffic lights coloring scheme, where
green conveys the impression that everything's OK, and amber that
something's not quite right.

Likewise, change the color of the summarized total number of known
breakages from bold red to the same yellow to be less alarmist and
more consistent with the above.

An earlier version of this patch used bold yellow but because these
are all long-known failures, reminding them to developers in bold
over and over does not help encouraging them to take a look at them
very much.  This iteration paints them in plain yellow instead to
make them less distracting.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-20 14:22:03 -08:00
Matt Kraai
40036bedb9 Port to QNX
Signed-off-by: Matt Kraai <matt.kraai@amo.abbott.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 19:00:00 -08:00
Matt Kraai
9dacffc040 Make lock local to fetch_pack
lock is only used by fetch_pack, so move it into that function.

Signed-off-by: Matt Kraai <matt.kraai@amo.abbott.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 19:00:00 -08:00
Junio C Hamano
b2d05e0653 git-compat-util.h: do not #include <sys/param.h> by default
Earlier we allowed platforms that lack <sys/param.h> not to include
the header file from git-compat-util.h; we have included this header
file since the early days back when we used MAXPATHLEN (which we no
longer use) and also depended on it slurping ULONG_MAX (which we get
by including stdint.h or inttypes.h these days).

It turns out that we can compile our modern codebase just file
without including it on many platforms (so far, Fedora, Debian,
Ubuntu, MinGW, Mac OS X, Cygwin, HP-Nonstop, QNX and z/OS are
reported to be OK).

Let's stop including it by default, and on platforms that need it to
be included, leave "make NEEDS_SYS_PARAM_H=YesPlease" as an escape
hatch and ask them to report to us, so that we can find out about
the real dependency and fix it in a more platform agnostic way.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 18:57:46 -08:00
Thomas Ackermann
18499ba694 Remove duplicate entry in ./Documentation/Makefile
Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 10:24:23 -08:00
Junio C Hamano
38104ca6b9 compat/fnmatch: update old-style definition to ANSI
We try to avoid touching borrowed code, but we encourage people to
write without old-style definition and compile with -Werror these
days, and on platforms that need to use NO_FNMATCH, these three
functions make the compilation fail.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 10:20:59 -08:00
Junio C Hamano
5a02966685 t9020: use configured Python to run the test helper
The test helper svnrdump_sim.py is used as "svnrdump" during the
execution of this test, but the arrangement was not optimal:

 - it relied on symbolic links;
 - unportable "export VAR=VAL" was used;
 - GIT_BUILD_DIR variable was not quoted correctly;
 - it assumed that the Python interpreter is in /usr/bin/ and
   called "python" (i.e. not "python2.7" etc.)

Rework this by writing a small shell script that spawns the right
Python interpreter, using the right quoting.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 07:46:59 -08:00
Junio C Hamano
2d3ac9ad67 t3600: Avoid "cp -a", which is a GNUism
With d4a7ffa (tests: "cp -a" is a GNUism, 2012-10-08), we got rid of
most of them, but the ones in a topic that was still in flight were
missed.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 07:46:44 -08:00
Junio C Hamano
ecd3e2f425 Merge branch 'jc/maint-test-portability' into 'jc/test-portability'
* jc/maint-test-portability:
  t4014: fix arguments to grep
  t9502: do not assume GNU tar
  t0200: "locale" may not exist
2012-12-19 07:46:05 -08:00
Junio C Hamano
27f6342f61 t4014: fix arguments to grep
These "expect-failure" tests were not looking for the right string
in the patch file.  For example:

	grep "^ *"S. E. Cipient" <scipient@example.com>\$" patch5

was looking for "^ *S." in these three files:

    "E."
    "Cipient <scipient@example.com>$"
    "patch5"

With some implementations of grep, the lack of file "E." was
reported as an error, leading to the failure of the test.

With other implementations of grep, the pattern "^ *S." matched what
was in patch5, without diagnosing the missing files as an error, and
made these tests unexpectedly pass.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 07:45:13 -08:00
Junio C Hamano
2060ed50e7 t9502: do not assume GNU tar
The check_snapshot function makes sure that no cruft outside the
repository hierarchy is added to the tar archive.  The output from
"tar tf" on the resulting archive is inspected to see if there is
anything that does not begin with "$prefix/".

There are two issues with this implementation:

 - Traditional tar implemenations that do not understand
   pax_global_header will write it out as if it is a plain file at
   the top-level;

 - Some implementations of tar do not add trailing slash when
   showing a directory entry (i.e. the output line for the entire
   archive will show "$prefix", not "$prefix/").

Fix them so that what we want to validate can be tested with
traditional tar implementations.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 07:44:29 -08:00
Junio C Hamano
7b90363099 t0200: "locale" may not exist
On systems without "locale" installed, t0200-gettext-basic.sh leaked
error messages when checking if some test locales are available.
Hide them, as they are not very useful.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19 07:44:20 -08:00
Junio C Hamano
252f922b19 Merge branch 'maint'
* maint:
  t7004: do not create unneeded gpghome/gpg.conf when GPG is not used
2012-12-18 15:35:01 -08:00
Junio C Hamano
f7be59b477 xmkstemp(): avoid showing truncated template more carefully
Some implementations of xmkstemp() leaves the given in/out buffer
truncated when they return with failure.

6cf6bb3 (Improve error messages when temporary file creation fails,
2010-12-18) attempted to show the real filename we tried to create
(but failed), and if that is not available due to such truncation,
to show the original template that was given by the caller.

But it failed to take into account that the given template could
have "directory/" in front, in which case the truncation point may
not be template[0] but somewhere else.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-18 13:02:33 -08:00