aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2013-01-10Merge branch 'rs/leave-base-name-in-name-field-of-tar'Junio C Hamano1-0/+2
Improve compatibility with implementations of "tar" that do not like empty name field in header (with the additional prefix field holding everything). * rs/leave-base-name-in-name-field-of-tar: archive-tar: split long paths more carefully
2013-01-10Merge branch 'jl/interrupt-clone-remove-separate-git-dir'Junio C Hamano2-2/+14
When "git clone --separate-git-dir" is interrupted, we failed to remove the real location we created the repository. * jl/interrupt-clone-remove-separate-git-dir: clone: support atomic operation with --separate-git-dir
2013-01-10Merge branch 'as/dir-c-cleanup'Junio C Hamano7-62/+171
Refactor and generally clean up the directory traversal API implementation. * as/dir-c-cleanup: dir.c: rename free_excludes() to clear_exclude_list() dir.c: refactor is_path_excluded() dir.c: refactor is_excluded() dir.c: refactor is_excluded_from_list() dir.c: rename excluded() to is_excluded() dir.c: rename excluded_from_list() to is_excluded_from_list() dir.c: rename path_excluded() to is_path_excluded() dir.c: rename cryptic 'which' variable to more consistent name Improve documentation and comments regarding directory traversal API api-directory-listing.txt: update to match code
2013-01-10Merge branch 'jk/config-uname'Junio C Hamano2-542/+540
Move the bits to set fallback default based on the platform from the main Makefile to a separate file, so that it can be included in Makefiles in subdirectories. * jk/config-uname: Makefile: hoist uname autodetection to config.mak.uname
2013-01-10Merge branch 'nd/wildmatch'Junio C Hamano13-9/+564
Allows pathname patterns in .gitignore and .gitattributes files with double-asterisks "foo/**/bar" to match any number of directory hierarchies. * nd/wildmatch: wildmatch: replace variable 'special' with better named ones compat/fnmatch: respect NO_FNMATCH* even on glibc wildmatch: fix "**" special case t3070: Disable some failing fnmatch tests test-wildmatch: avoid Windows path mangling Support "**" wildcard in .gitignore and .gitattributes wildmatch: make /**/ match zero or more directories wildmatch: adjust "**" behavior wildmatch: fix case-insensitive matching wildmatch: remove static variable force_lower_case wildmatch: make wildmatch's return value compatible with fnmatch t3070: disable unreliable fnmatch tests Integrate wildmatch to git wildmatch: follow Git's coding convention wildmatch: remove unnecessary functions Import wildmatch from rsync ctype: support iscntrl, ispunct, isxdigit and isprint ctype: make sane_ctype[] const array Conflicts: Makefile
2013-01-10Merge branch 'tb/test-shell-lint'Junio C Hamano2-2/+33
Check for common mistakes in the test scripts, based on simple pattern-matching. * tb/test-shell-lint: test: Add check-non-portable-shell.pl
2013-01-10Merge branch 'mz/pick-unborn'Junio C Hamano10-48/+44
Allow "git cherry-pick $commit" even when you do not have any history behind HEAD yet. * mz/pick-unborn: learn to pick/revert into unborn branch tests: move test_cmp_rev to test-lib-functions
2013-01-10Merge branch 'aw/rebase-am-failure-detection'Junio C Hamano1-6/+43
Save output from format-patch command in a temporary file, just in case it aborts, to give a better failure-case behaviour. * aw/rebase-am-failure-detection: rebase: Handle cases where format-patch fails
2013-01-10Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit'Junio C Hamano3-8/+17
Stop spending cycles to compute information to be placed on commented lines in "merge --no-edit", which will be discarded anyway. * jc/maint-fmt-merge-msg-no-edit-lose-credit: merge --no-edit: do not credit people involved in the side branch
2013-01-09Update draft release notes to 1.8.2Junio C Hamano1-11/+53
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-09Merge branch 'master' of git://github.com/git-l10n/git-poJunio C Hamano1-242/+242
Update German translation. * 'master' of git://github.com/git-l10n/git-po: l10n: de.po: address the user formally
2013-01-09Merge branch 'nd/maint-branch-desc-doc'Junio C Hamano4-14/+72
Teach various forms of "format-patch" command line to identify what branch the patches are taken from, so that the branch description is picked up in more cases. * nd/maint-branch-desc-doc: format-patch: pick up branch description when no ref is specified format-patch: pick up correct branch name from symbolic ref t4014: a few more tests on cover letter using branch description branch: delete branch description if it's empty config.txt: a few lines about branch.<name>.description
2013-01-09Merge branch 'jk/enable-test-lint-by-default'Junio C Hamano1-0/+1
We have two simple and quick tests to catch common mistakes when writing test scripts, but we did not run them by default when running tests. * jk/enable-test-lint-by-default: tests: turn on test-lint by default
2013-01-09Merge branch 'ap/merge-stop-at-prepare-commit-msg-failure'Junio C Hamano2-2/+17
"git merge" started calling prepare-commit-msg hook like "git commit" does some time ago, but forgot to pay attention to the exit status of the hook. t7505 may want a general clean-up but that is a different topic. * ap/merge-stop-at-prepare-commit-msg-failure: merge: Honor prepare-commit-msg return code
2013-01-09Merge branch 'fc/remote-bzr'Junio C Hamano2-0/+868
New remote helper for bzr, with minimum fix squashed in. * fc/remote-bzr: remote-bzr: detect local repositories remote-bzr: add support for older versions of bzr remote-bzr: add support to push special modes remote-bzr: add support for fecthing special modes remote-bzr: add simple tests remote-bzr: update working tree upon pushing remote-bzr: add support for remote repositories remote-bzr: add support for pushing Add new remote-bzr transport helper
2013-01-09Merge branch 'jc/submittingpatches'Junio C Hamano1-84/+91
Streamline the document and update with a few e-mail addresses the patches should be sent to. * jc/submittingpatches: SubmittingPatches: give list and maintainer addresses SubmittingPatches: remove overlong checklist SubmittingPatches: mention subsystems with dedicated repositories SubmittingPatches: who am I and who cares?
2013-01-09Merge branch 'os/gitweb-highlight-uncaptured'Junio C Hamano1-1/+1
The code to sanitize control characters before passing it to "highlight" filter lost known-to-be-safe control characters by mistake. * os/gitweb-highlight-uncaptured: gitweb: fix error in sanitize when highlight is enabled
2013-01-09Merge branch 'jn/less-reconfigure'Junio C Hamano1-2/+8
When autoconf is used, any build on a different commit always ran "config.status --recheck" even when unnecessary. * jn/less-reconfigure: build: do not automatically reconfigure unless configure.ac changed
2013-01-09Merge branch 'er/python-version-requirements'Junio C Hamano8-3/+44
Some python scripts we ship cannot be run with older versions of the interpreter. * er/python-version-requirements: Add checks to Python scripts for version dependencies.
2013-01-09Merge branch 'er/stop-recommending-parsecvs'Junio C Hamano1-4/+2
Stop recommending a defunct third-party software. * er/stop-recommending-parsecvs: Remove the suggestion to use parsecvs, which is currently broken.
2013-01-08Merge branch 'maint'Junio C Hamano3-4/+6
* maint: t1402: work around shell quoting issue on NetBSD remote-hg: Fix biridectionality -> bidirectionality typos
2013-01-08Merge branch 'kb/maint-bundle-doc'Junio C Hamano1-5/+4
* kb/maint-bundle-doc: Documentation: full-ness of a bundle is significant for cloning Documentation: correct example restore from bundle
2013-01-08Merge branch 'as/test-name-alias-uniquely'Junio C Hamano1-6/+6
A few short-and-bland aliases used in the tests were interfering with git-custom command in user's $PATH. * as/test-name-alias-uniquely: Use longer alias names in subdirectory tests
2013-01-08Merge branch 'ta/remove-stale-translated-tut'Junio C Hamano1-675/+0
Remove a translation of a document that was left stale. * ta/remove-stale-translated-tut: Remove Documentation/pt_BR/gittutorial.txt
2013-01-08Merge branch 'tb/test-t9810-no-sed-i'Junio C Hamano1-10/+14
* tb/test-t9810-no-sed-i: t9810: Do not use sed -i
2013-01-08Merge branch 'tb/test-t9020-no-which'Junio C Hamano1-2/+2
* tb/test-t9020-no-which: t9020: which is not portable
2013-01-08Merge branch 'jk/maint-fast-import-doc-dedup-done'Junio C Hamano1-5/+2
The "logical order" reorganization can come after that is done and can cook longer in 'next'. * jk/maint-fast-import-doc-dedup-done: git-fast-import(1): remove duplicate '--done' option
2013-01-08Merge branch 'jk/pathspec-literal'Junio C Hamano1-1/+7
Finishing touches to fix a test breakage on Windows * jk/pathspec-literal: t6130-pathspec-noglob: Windows does not allow a file named "f*"
2013-01-08Merge branch 'jk/maint-fast-import-doc-dedup-done'Junio C Hamano1-5/+2
* jk/maint-fast-import-doc-dedup-done: git-fast-import(1): remove duplicate '--done' option
2013-01-08git-fast-import(1): remove duplicate '--done' optionJohn Keeping1-5/+2
The '--done' option to git-fast-import is documented twice in its manual page. Combine the best bits of each description, keeping the location of the instance that was added first. Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-08t1402: work around shell quoting issue on NetBSDRené Scharfe1-2/+4
The test fails for me on NetBSD 6.0.1 and reports: ok 1 - ref name '' is invalid ok 2 - ref name '/' is invalid ok 3 - ref name '/' is invalid with options --allow-onelevel ok 4 - ref name '/' is invalid with options --normalize error: bug in the test script: not 2 or 3 parameters to test-expect-success The alleged bug is in this line: invalid_ref NOT_MINGW '/' '--allow-onelevel --normalize' invalid_ref() constructs a test case description using its last argument, but the shell seems to split it up into two pieces if it contains a space. Minimal test case: # on NetBSD with /bin/sh $ a() { echo $#-$1-$2; } $ t="x"; a "${t:+$t}" 1-x- $ t="x y"; a "${t:+$t}" 2-x-y $ t="x y"; a "${t:+x y}" 1-x y- # and with bash $ t="x y"; a "${t:+$t}" 1-x y- $ t="x y"; a "${t:+x y}" 1-x y- This may be a bug in the shell, but here's a simple workaround: Construct the description string first and store it in a variable, and then use that to call test_expect_success(). Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-08Merge branch 'ms/subtree-fixlets' into maintJunio C Hamano2-1/+2
* ms/subtree-fixlets: git-subtree: fix typo in manpage git-subtree: ignore git-subtree executable
2013-01-08Merge branch 'ss/nedmalloc-compilation' into maintJunio C Hamano1-1/+4
* ss/nedmalloc-compilation: nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2
2013-01-08Merge branch 'jc/maint-fnmatch-old-style-definition' into maintJunio C Hamano1-12/+12
* jc/maint-fnmatch-old-style-definition: compat/fnmatch: update old-style definition to ANSI
2013-01-08Merge branch 'jc/test-portability' into maintJunio C Hamano2-6/+10
* jc/test-portability: t9020: use configured Python to run the test helper t3600: Avoid "cp -a", which is a GNUism
2013-01-08Merge branch 'jc/maint-fbsd-sh-ifs-workaround' into maintJunio C Hamano1-2/+5
* jc/maint-fbsd-sh-ifs-workaround: sh-setup: work around "unset IFS" bug in some shells
2013-01-08Merge branch 'jc/mkstemp-more-careful-error-reporting' into maintJunio C Hamano1-1/+1
* jc/mkstemp-more-careful-error-reporting: xmkstemp(): avoid showing truncated template more carefully
2013-01-08Merge branch 'jc/test-cvs-no-init-in-existing-dir' into maintJunio C Hamano1-1/+2
* jc/test-cvs-no-init-in-existing-dir: t9200: let "cvs init" create the test repository
2013-01-08Merge branch 'jc/maint-test-portability' into maintJunio C Hamano3-6/+8
* jc/maint-test-portability: t4014: fix arguments to grep t9502: do not assume GNU tar t0200: "locale" may not exist
2013-01-08remote-hg: Fix biridectionality -> bidirectionality typosW. Trevor King2-2/+2
Signed-off-by: W. Trevor King <wking@tremily.us> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-07l10n: de.po: address the user formallyRalf Thielow1-242/+242
In the current German translation, the user was addressed informally ("Du", "Dein") which is unusual in German software. This commit changes the addressing to be formal ("Sie", "Ihr"). Suggested-by: Christian Stimming <stimming@tuhh.de> Suggested-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
2013-01-06Merge branch 'mz/oneway-merge-wo-u-no-lstat'Junio C Hamano1-1/+1
Optimize "read-tree -m <tree-ish>" without "-u". * mz/oneway-merge-wo-u-no-lstat: oneway_merge(): only lstat() when told to update worktree
2013-01-06Merge branch 'cc/no-gitk-build-dependency'Junio C Hamano2-15/+14
Remove leftover bits from an earlier change to move gitk in its own subdirectory. Reimplementing the dependency tracking rules needs to be done in gitk history separately. * cc/no-gitk-build-dependency: Makefile: replace "echo 1>..." with "echo >..." Makefile: detect when PYTHON_PATH changes Makefile: remove tracking of TCLTK_PATH
2013-01-06Merge branch 'jn/warn-on-inaccessible-loosen'Junio C Hamano5-7/+31
Deal with a situation where .config/git is a file and we notice .config/git/config is not readable due to ENOTDIR, not ENOENT. * jn/warn-on-inaccessible-loosen: config: exit on error accessing any config file doc: advertise GIT_CONFIG_NOSYSTEM config: treat user and xdg config permission problems as errors config, gitignore: failure to access with ENOTDIR is ok
2013-01-06Merge branch 'jc/apply-trailing-blank-removal'Junio C Hamano1-6/+17
Fix to update_pre_post_images() that did not take into account the possibility that whitespace fix could shrink the preimage and change the number of lines in it. * jc/apply-trailing-blank-removal: apply.c:update_pre_post_images(): the preimage can be truncated
2013-01-06t6130-pathspec-noglob: Windows does not allow a file named "f*"Johannes Sixt1-1/+7
Windows disallows file names that contain a star. Arrange the test setup to insert the file name "f*" in the repository without the corresponding file in the worktree. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-06Update draft release notes to 1.8.2Junio C Hamano1-2/+43
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-05Merge branch 'wk/submodule-update-remote'Junio C Hamano6-2/+117
The beginning of 'integrate with the tip of the remote branch, not the commit recorded in the superproject gitlink' support. * wk/submodule-update-remote: submodule add: If --branch is given, record it in .gitmodules submodule update: add --remote for submodule's upstream changes submodule: add get_submodule_config helper funtion
2013-01-05Merge branch 'jk/pathspec-literal'Junio C Hamano5-11/+115
Allow scripts to feed literal paths to commands that take pathspecs, by disabling wildcard globbing. * jk/pathspec-literal: add global --literal-pathspecs option Conflicts: dir.c
2013-01-05Merge branch 'jk/error-const-return'Junio C Hamano6-9/+29
Help compilers' flow analysis by making it more explicit that error() always returns -1, to reduce false "variable used uninitialized" warnings. Looks somewhat ugly but not too much. * jk/error-const-return: silence some -Wuninitialized false positives make error()'s constant return value more visible
2013-01-05Merge branch 'jc/format-color-auto'Junio C Hamano5-8/+76
Introduce "log --format=%C(auto,blue)Foo%C(auto,reset)" that does not color its output when writing to a non-terminal. * jc/format-color-auto: log --format: teach %C(auto,black) to respect color config t6006: clean up whitespace
2013-01-05Merge branch 'jk/complete-commit-c'Junio C Hamano1-0/+7
Complete "git commmit -c foo<TAB>" into a refname that begins with "foo". * jk/complete-commit-c: completion: complete refs for "git commit -c"
2013-01-05Merge branch 'ja/directory-attrs'Junio C Hamano3-9/+76
The attribute mechanism didn't allow limiting attributes to be applied to only a single directory itself with "path/" like the exclude mechanism does. * ja/directory-attrs: Add directory pattern matching to attributes
2013-01-05Merge branch 'jk/mailmap-from-blob'Junio C Hamano7-38/+214
Allow us to read, and default to read, mailmap files from the tip of the history in bare repositories. This will help running tools like shortlog in server settings. * jk/mailmap-from-blob: mailmap: default mailmap.blob in bare repositories mailmap: fix some documentation loose-ends for mailmap.blob mailmap: clean up read_mailmap error handling mailmap: support reading mailmap from blobs mailmap: refactor mailmap parsing for non-file sources
2013-01-05Merge branch 'jc/fetch-ignore-symref'Junio C Hamano2-1/+54
Avoid false error from an attempt to update local symbolic ref via fetch. * jc/fetch-ignore-symref: fetch: ignore wildcarded refspecs that update local symbolic refs
2013-01-05Merge branch 'cr/push-force-tag-update'Junio C Hamano13-60/+188
Require "-f" for push to update a tag, even if it is a fast-forward. * cr/push-force-tag-update: push: allow already-exists advice to be disabled push: rename config variable for more general use push: cleanup push rules comment push: clarify rejection of update to non-commit-ish push: require force for annotated tags push: require force for refs under refs/tags/ push: flag updates that require force push: keep track of "update" state separately push: add advice for rejected tag reference push: return reject reasons as a bitset
2013-01-05Merge branch 'fc/fast-export-fixes'Junio C Hamano10-23/+352
Various updates to fast-export used in the context of the remote helper interface. * fc/fast-export-fixes: fast-export: make sure updated refs get updated fast-export: don't handle uninteresting refs fast-export: fix comparison in tests fast-export: trivial cleanup remote-testgit: implement the "done" feature manually remote-testgit: report success after an import remote-testgit: exercise more features remote-testgit: cleanup tests remote-testgit: remove irrelevant test remote-testgit: remove non-local functionality Add new simplified git-remote-testgit Rename git-remote-testgit to git-remote-testpy remote-helpers: fix failure message remote-testgit: fix direction of marks fast-export: avoid importing blob marks
2013-01-05Merge branch 'mh/unify-xml-in-imap-send-and-http-push'Junio C Hamano4-108/+104
Update imap-send to reuse xml quoting code from http-push codepath, clean up some code, and fix a small bug. * mh/unify-xml-in-imap-send-and-http-push: wrap_in_html(): process message in bulk rather than line-by-line wrap_in_html(): use strbuf_addstr_xml_quoted() imap-send: change msg_data from storing (ptr, len) to storing strbuf imap-send: correctly report errors reading from stdin imap-send: store all_msgs as a strbuf lf_to_crlf(): NUL-terminate msg_data::data xml_entities(): use function strbuf_addstr_xml_quoted() Add new function strbuf_add_xml_quoted()
2013-01-05Merge branch 'nd/pathspec-wildcard'Junio C Hamano6-11/+120
Optimize matching paths with common forms of pathspecs that contain wildcard characters. * nd/pathspec-wildcard: tree_entry_interesting: do basedir compare on wildcard patterns when possible pathspec: apply "*.c" optimization from exclude pathspec: do exact comparison on the leading non-wildcard part pathspec: save the non-wildcard length part
2013-01-05Merge branch 'jk/fsck-dot-in-trees'Junio C Hamano2-0/+46
* jk/fsck-dot-in-trees: fsck: warn about ".git" in trees fsck: warn about '.' and '..' in trees
2013-01-05archive-tar: split long paths more carefullyRené Scharfe1-0/+2
The name field of a tar header has a size of 100 characters. This limit was extended long ago in a backward compatible way by providing the additional prefix field, which can hold 155 additional characters. The actual path is constructed at extraction time by concatenating the prefix field, a slash and the name field. get_path_prefix() is used to determine which slash in the path is used as the cutting point and thus which part of it is placed into the field prefix and which into the field name. It tries to cram as much into the prefix field as possible. (And only if we can't fit a path into the provided 255 characters we use a pax extended header to store it.) If a path is longer than 100 but shorter than 156 characters and ends with a slash (i.e. is for a directory) then get_path_prefix() puts the whole path in the prefix field and leaves the name field empty. GNU tar reconstructs the path without complaint, but the tar included with NetBSD 6 does not: It reports the header to be invalid. For compatibility with this version of tar, make sure to never leave the name field empty. In order to do that, trim the trailing slash from the part considered as possible prefix, if it exists -- that way the last path component (or more, but not less) will end up in the name field. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-05Merge branch 'pf/editor-ignore-sigint'Junio C Hamano1-1/+1
* pf/editor-ignore-sigint: fix compilation with NO_PTHREADS
2013-01-05fix compilation with NO_PTHREADSJeff King1-1/+1
Commit 1327452 cleaned up an unused parameter from wait_or_whine, but forgot to update a caller that is inside "#ifdef NO_PTHREADS". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-05clone: support atomic operation with --separate-git-dirJens Lehmann2-2/+14
Since b57fb80a7d (init, clone: support --separate-git-dir for .git file) git clone supports the --separate-git-dir option to create the git dir outside the work tree. But when that option is used, the git dir won't be deleted in case the clone fails like it would be without this option. This makes clone lose its atomicity as in case of a failure a partly set up git dir is left behind. A real world example where this leads to problems is when "git submodule update" fails to clone a submodule and later calls to "git submodule update" stumble over the partially set up git dir and try to revive the submodule from there, which then fails with a not very user friendly error message. Fix that by updating the junk_git_dir variable (used to remember if and what git dir should be removed in case of failure) to the new value given with the --seperate-git-dir option. Also add a test for this to t5600 (and while at it fix the former last test to not cd into a directory to test for its existence but use "test -d" instead). Reported-by: Manlio Perillo <manlio.perillo@gmail.com> Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-03Makefile: hoist uname autodetection to config.mak.unameJeff King2-542/+540
Our Makefile first sets up some sane per-platform defaults by looking at "uname", then modifies that according to the results of autoconf (if any), then modifies that according to the user's wishes in config.mak. For sub-Makefiles like Documentation/Makefile, the latter two are available, but the uname defaults are available only to the main Makefile. This hasn't been a problem so far, because the sub-Makefiles do not rely on any of those automatic settings to do their work. This patch puts the uname magic into its own file so it can be reused in other Makefiles, opening up the possibility of new knobs. Note that we leave one reference to uname in the top-level Makefile: if we are on Darwin, we must check the NO_FINK and NO_DARWIN_PORTS settings. But because we are combining uname settings with user-options, we must do so after all of the config is loaded. This is acceptable, as the resulting conditionals are about setting variables specific to the top-level Makefile (and if that ever changes, we can hoist them into a separate post-config include, too). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-03Update draft release notes to 1.8.2Junio C Hamano1-1/+10
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-03Merge branch 'da/p4merge-mktemp'Junio C Hamano1-14/+13
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
2013-01-03Merge branch 'ms/subtree-fixlets'Junio C Hamano2-1/+2
* ms/subtree-fixlets: git-subtree: fix typo in manpage git-subtree: ignore git-subtree executable
2013-01-03Merge branch 'as/test-tweaks'Junio C Hamano2-59/+184
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'
2013-01-03Merge branch 'jc/same-encoding'Junio C Hamano1-12/+4
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()
2013-01-03Merge branch 'pf/editor-ignore-sigint'Junio C Hamano2-6/+24
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
2013-01-03Merge branch 'mh/pthreads-autoconf'Junio C Hamano1-1/+11
* mh/pthreads-autoconf: configure.ac: fix pthreads detection on Mac OS X
2013-01-03Merge branch 'mk/qnx'Junio C Hamano3-3/+27
Port to QNX. * mk/qnx: Port to QNX Make lock local to fetch_pack
2013-01-03Merge branch 'dm/port'Junio C Hamano3-1/+34
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
2013-01-03Merge branch 'ss/nedmalloc-compilation'Junio C Hamano1-1/+4
* ss/nedmalloc-compilation: nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2
2013-01-03Merge branch 'jc/maint-fnmatch-old-style-definition'Junio C Hamano1-12/+12
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
2013-01-03merge: Honor prepare-commit-msg return codeAntoine Pelisse2-2/+17
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>
2013-01-03format-patch: pick up branch description when no ref is specifiedNguyễn Thái Ngọc Duy2-3/+23
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>
2013-01-03tests: turn on test-lint by defaultJeff King1-0/+1
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>
2013-01-03format-patch: pick up correct branch name from symbolic refNguyễn Thái Ngọc Duy2-12/+23
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>
2013-01-03t4014: a few more tests on cover letter using branch descriptionNguyễn Thái Ngọc Duy1-0/+21
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-03branch: delete branch description if it's emptyNguyễn Thái Ngọc Duy1-1/+1
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-02remote-bzr: detect local repositoriesFelipe Contreras1-20/+28
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>
2013-01-02remote-bzr: add support for older versions of bzrFelipe Contreras1-5/+9
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>
2013-01-02remote-bzr: add support to push special modesFelipe Contreras1-17/+43
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-02remote-bzr: add support for fecthing special modesFelipe Contreras2-11/+59
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-02remote-bzr: add simple testsFelipe Contreras1-0/+111
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-02test: Add check-non-portable-shell.plTorsten Bögershausen2-2/+33
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>
2013-01-02Start 1.8.2 cycleJunio C Hamano3-2/+99
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>
2013-01-02Merge branch 'jc/test-portability'Junio C Hamano2-6/+10
* jc/test-portability: t9020: use configured Python to run the test helper t3600: Avoid "cp -a", which is a GNUism
2013-01-02Merge branch 'jc/maint-fbsd-sh-ifs-workaround'Junio C Hamano1-2/+5
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
2013-01-02Merge branch 'sp/shortlog-missing-lf'Junio C Hamano4-12/+34
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
2013-01-02Merge branch 'md/gitweb-sort-by-age'Junio C Hamano1-14/+21
"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
2013-01-02Merge branch 'nd/invalidate-i-t-a-cache-tree'Junio C Hamano3-17/+65
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()
2013-01-02Merge branch 'jk/repack-ref-racefix'Junio C Hamano1-1/+4
"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
2013-01-02Merge branch 'rb/http-cert-cred-no-username-prompt'Junio C Hamano1-0/+1
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
2013-01-02Merge branch 'mk/maint-graph-infinity-loop'Junio C Hamano3-6/+16
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
2013-01-02Merge branch 'ss/svn-prompt'Junio C Hamano2-28/+60
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
2013-01-02Merge branch 'jc/mkstemp-more-careful-error-reporting'Junio C Hamano1-1/+1
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
2013-01-02Merge branch 'jc/test-cvs-no-init-in-existing-dir'Junio C Hamano1-1/+2
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
2013-01-02Merge branch 'jc/maint-test-portability'Junio C Hamano3-6/+8
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
2013-01-02Merge branch 'mh/ceiling'Junio C Hamano11-165/+202
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()
2013-01-02build: do not automatically reconfigure unless configure.ac changedJonathan Nieder1-2/+8
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>
2013-01-02SubmittingPatches: give list and maintainer addressesJunio C Hamano1-2/+6
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>
2013-01-02SubmittingPatches: remove overlong checklistJunio C Hamano1-76/+61
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>
2013-01-01t9020: which is not portableTorsten Bögershausen1-2/+2
Use type instead Signed-off-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-01t9810: Do not use sed -iTorsten Bögershausen1-10/+14
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>
2013-01-01gitweb: fix error in sanitize when highlight is enabledOrgad Shaneh1-1/+1
$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>
2013-01-01Documentation: full-ness of a bundle is significant for cloningJunio C Hamano1-4/+3
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>
2013-01-01wildmatch: replace variable 'special' with better named onesNguyễn Thái Ngọc Duy1-9/+9
'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>
2013-01-01compat/fnmatch: respect NO_FNMATCH* even on glibcNguyễn Thái Ngọc Duy1-1/+2
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-01wildmatch: fix "**" special caseNguyễn Thái Ngọc Duy2-2/+3
"**" 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>
2013-01-01SubmittingPatches: mention subsystems with dedicated repositoriesJunio C Hamano1-0/+24
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>
2013-01-01SubmittingPatches: who am I and who cares?Junio C Hamano1-8/+2
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>
2013-01-01Documentation: correct example restore from bundleKirill Brilliantov1-1/+1
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>
2013-01-01config.txt: a few lines about branch.<name>.descriptionNguyễn Thái Ngọc Duy1-0/+6
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-31Git 1.8.1v1.8.1Junio C Hamano3-16/+21
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-28merge --no-edit: do not credit people involved in the side branchJunio C Hamano3-8/+17
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>
2012-12-28Use longer alias names in subdirectory testsAaron Schrab1-6/+6
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>
2012-12-28dir.c: rename free_excludes() to clear_exclude_list()Adam Spiers3-3/+7
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>
2012-12-28dir.c: refactor is_path_excluded()Adam Spiers2-9/+41
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>
2012-12-28dir.c: refactor is_excluded()Adam Spiers1-9/+29
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>
2012-12-28dir.c: refactor is_excluded_from_list()Adam Spiers1-9/+28
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>
2012-12-28dir.c: rename excluded() to is_excluded()Adam Spiers3-8/+8
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>
2012-12-28dir.c: rename excluded_from_list() to is_excluded_from_list()Adam Spiers3-10/+13
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>
2012-12-28dir.c: rename path_excluded() to is_path_excluded()Adam Spiers5-6/+6
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>
2012-12-28dir.c: rename cryptic 'which' variable to more consistent nameAdam Spiers2-7/+7
'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>
2012-12-28Improve documentation and comments regarding directory traversal APIAdam Spiers3-6/+37
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>
2012-12-28api-directory-listing.txt: update to match codeAdam Spiers1-6/+6
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>
2012-12-28Remove the suggestion to use parsecvs, which is currently broken.Eric S. Raymond1-4/+2
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>
2012-12-28Add checks to Python scripts for version dependencies.Eric S. Raymond8-3/+44
Signed-off-by: Eric S. Raymond <esr@thyrsus.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-27Merge branch 'so/prompt-command'Junio C Hamano1-12/+20
Finishing touches... * so/prompt-command: make __git_ps1 accept a third parameter in pcmode
2012-12-27Sync with 1.8.0.3Junio C Hamano2-1/+16
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-27Git 1.8.0.3v1.8.0.3Junio C Hamano4-3/+18
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-27git(1): show link to contributor summary pageJunio C Hamano1-1/+4
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>
2012-12-27Merge branch 'sl/maint-git-svn-docs' into maintJunio C Hamano1-6/+85
* 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(@).
2012-12-27git-svn: Note about tags.Sebastian Leske1-0/+6
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>
2012-12-27git-svn: Expand documentation for --follow-parentSebastian Leske1-3/+12
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>
2012-12-27git-svn: Recommend use of structure options.Sebastian Leske1-3/+21
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>
2012-12-27git-svn: Document branches with at-sign(@).Sebastian Leske1-0/+46
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>
2012-12-27Merge branch 'gb/maint-doc-svn-log-window-size' into maintJunio C Hamano1-0/+7
* branch 'gb/maint-doc-svn-log-window-size': Document git-svn fetch --log-window-size parameter
2012-12-27Merge branch 'km/maint-doc-git-reset' into maintJunio C Hamano1-4/+4
* branch 'km/maint-doc-git-reset': doc: git-reset: make "<mode>" optional
2012-12-27git-remote-helpers.txt: document invocation before input formatMax Horn1-31/+31
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>
2012-12-27Merge branch 'jk/avoid-mailto-invalid-in-doc' into maintJunio C Hamano3-3/+3
* jk/avoid-mailto-invalid-in-doc: Documentation: don't link to example mail addresses
2012-12-27Merge branch 'tj/maint-doc-commit-sign' into maintJunio C Hamano1-1/+5
* branch 'tj/maint-doc-commit-sign': Add -S, --gpg-sign option to manpage of "git commit"
2012-12-27Documentation: move diff.wordRegex from config.txt to diff-config.txtRamkumar Ramachandra2-6/+6
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>
2012-12-27Remove Documentation/pt_BR/gittutorial.txtThomas Ackermann1-675/+0
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>
2012-12-26mergetools/p4merge: Honor $TMPDIR for the /dev/null placeholderDavid Aguilar1-14/+13
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-26make __git_ps1 accept a third parameter in pcmodeSimon Oosthoek1-12/+20
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-24t9200: let "cvs init" create the test repositoryJunio C Hamano1-1/+2
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-23learn to pick/revert into unborn branchMartin von Zweigbergk3-8/+29
cherry-picking into an unborn branch should work, so make it work, with or without --ff. Cherry-picking anything other than a commit that only adds files, will naturally result in conflicts. Similarly, revert also works, but will result in conflicts unless the specified revision only deletes files. Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-22Merge branch 'maint'Junio C Hamano1-1/+1
2012-12-22Merge branch 'jc/doc-diff-blobs' into maintJunio C Hamano1-2/+7
* jc/doc-diff-blobs: Documentation: Describe "git diff <blob> <blob>" separately
2012-12-22Merge branch 'cr/doc-checkout-branch' into maintJunio C Hamano1-10/+41
* cr/doc-checkout-branch: Documentation/git-checkout.txt: document 70c9ac2 behavior Documentation/git-checkout.txt: clarify usage
2012-12-22Merge branch 'ta/api-index-doc' into maintJunio C Hamano1-2/+0
* ta/api-index-doc: Remove misleading date from api-index-skel.txt
2012-12-22Merge branch 'as/doc-for-devs' into maintJunio C Hamano2-13/+16
* as/doc-for-devs: Documentation: move support for old compilers to CodingGuidelines SubmittingPatches: add convention of prefixing commit messages
2012-12-22Merge branch 'sl/readme-gplv2' into maintJunio C Hamano1-3/+4
* 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-22Merge branch 'jc/fetch-tags-doc' into maintJunio C Hamano1-8/+5
* jc/fetch-tags-doc: fetch --tags: clarify documentation
2012-12-22Merge branch 'nd/index-format-doc' into maintJunio C Hamano1-2/+3
* nd/index-format-doc: index-format.txt: clarify what is "invalid"
2012-12-22Merge branch 'jk/mailmap-cleanup' into maintJunio C Hamano2-33/+82
* 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-22Merge branch 'ta/doc-cleanup' into maintJunio C Hamano20-68/+134
* 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-22Sort howto documents in howto-index.txtThomas Ackermann1-1/+1
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-22git-subtree: fix typo in manpageMichael Schubert1-1/+1
Signed-off-by: Michael Schubert <mschub@elegosoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-22git-subtree: ignore git-subtree executableMichael Schubert1-0/+1
Signed-off-by: Michael Schubert <mschub@elegosoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-22tests: move test_cmp_rev to test-lib-functionsMartin von Zweigbergk7-40/+15
A function for checking that two given parameters refer to the same revision was defined in several places, so move the definition to test-lib-functions.sh instead. Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-22Git 1.8.1-rc3v1.8.1-rc3Junio C Hamano1-1/+1
The changes since -rc2 are mostly documentation updates. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-21Merge branch 'ta/new-command-howto'Junio C Hamano2-2/+8
* ta/new-command-howto: Move ./technical/api-command.txt to ./howto/new-command.txt
2012-12-21Merge branch 'jc/doc-diff-blobs'Junio C Hamano1-2/+7
"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-21Merge branch 'cr/doc-checkout-branch'Junio C Hamano1-10/+41
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-21Merge branch 'ta/api-index-doc'Junio C Hamano1-2/+0
* ta/api-index-doc: Remove misleading date from api-index-skel.txt
2012-12-21Merge branch 'jk/avoid-mailto-invalid-in-doc'Junio C Hamano3-3/+3
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-21Merge branch 'as/doc-for-devs'Junio C Hamano2-13/+16
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-21Merge branch 'sl/readme-gplv2'Junio C Hamano1-3/+4
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-21Merge branch 'jc/fetch-tags-doc'Junio C Hamano1-8/+5
"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-21Merge branch 'nd/index-format-doc'Junio C Hamano1-2/+3
* nd/index-format-doc: index-format.txt: clarify what is "invalid"
2012-12-21Merge branch 'sl/git-svn-docs'Junio C Hamano1-6/+85
* 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-21Merge branch 'jk/mailmap-cleanup'Junio C Hamano2-33/+82
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-21Move ./technical/api-command.txt to ./howto/new-command.txtThomas Ackermann2-2/+8
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-21http.c: Avoid username prompt for certifcate credentialsRene Bredlau1-0/+1
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-21refs: do not use cached refs in repack_without_refJeff King1-1/+4
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-20tests: paint unexpectedly fixed known breakages in bold redAdam Spiers2-10/+33
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-20tests: test the test framework more thoroughlyAdam Spiers1-0/+105
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-20tests: refactor mechanics of testing in a sub test-libAdam Spiers1-45/+40
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-20tests: change info messages from yellow/brown to cyanAdam Spiers1-3/+3
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-20tests: paint skipped tests in blueAdam Spiers1-1/+1
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-20tests: paint known breakages in yellowAdam Spiers1-2/+4
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-20oneway_merge(): only lstat() when told to update worktreeMartin von Zweigbergk1-1/+1
Although the subject line of 613f027 (read-tree -u one-way merge fix to check out locally modified paths., 2006-05-15) mentions "read-tree -u", it did not seem to check whether -u was in effect. Not checking whether -u is in effect makes e.g. "read-tree --reset" lstat() the worktree, even though the worktree stat should not matter for that operation. This speeds up e.g. "git reset" a little on the linux-2.6 repo (best of five, warm cache): Before After real 0m0.288s 0m0.233s user 0m0.190s 0m0.150s sys 0m0.090s 0m0.080s Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19Port to QNXMatt Kraai2-1/+26
Signed-off-by: Matt Kraai <matt.kraai@amo.abbott.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19Make lock local to fetch_packMatt Kraai1-2/+1
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-19git-compat-util.h: do not #include <sys/param.h> by defaultJunio C Hamano3-10/+6
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-19add global --literal-pathspecs optionJeff King5-6/+107
Git takes pathspec arguments in many places to limit the scope of an operation. These pathspecs are treated not as literal paths, but as glob patterns that can be fed to fnmatch. When a user is giving a specific pattern, this is a nice feature. However, when programatically providing pathspecs, it can be a nuisance. For example, to find the latest revision which modified "$foo", one can use "git rev-list -- $foo". But if "$foo" contains glob characters (e.g., "f*"), it will erroneously match more entries than desired. The caller needs to quote the characters in $foo, and even then, the results may not be exactly the same as with a literal pathspec. For instance, the depth checks in match_pathspec_depth do not kick in if we match via fnmatch. This patch introduces a global command-line option (i.e., one for "git" itself, not for specific commands) to turn this behavior off. It also has a matching environment variable, which can make it easier if you are a script or porcelain interface that is going to issue many such commands. This option cannot turn off globbing for particular pathspecs. That could eventually be done with a ":(noglob)" magic pathspec prefix. However, that level of granularity is more cumbersome to use for many cases, and doing ":(noglob)" right would mean converting the whole codebase to use "struct pathspec", as the usual "const char **pathspec" cannot represent extra per-item flags. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19Remove duplicate entry in ./Documentation/MakefileThomas Ackermann1-1/+0
Signed-off-by: Thomas Ackermann <th.acker@arcor.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19compat/fnmatch: update old-style definition to ANSIJunio C Hamano1-12/+12
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-19submodule add: If --branch is given, record it in .gitmodulesW. Trevor King3-0/+7
This allows you to easily record a submodule.<name>.branch option in .gitmodules when you add a new submodule. With this patch, $ git submodule add -b <branch> <repository> [<path>] $ git config -f .gitmodules submodule.<path>.branch <branch> reduces to $ git submodule add -b <branch> <repository> [<path>] This means that future calls to $ git submodule update --remote ... will get updates from the same branch that you used to initialize the submodule, which is usually what you want. Signed-off-by: W. Trevor King <wking@tremily.us> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19submodule update: add --remote for submodule's upstream changesW. Trevor King5-2/+84
The current `update` command incorporates the superproject's gitlinked SHA-1 ($sha1) into the submodule HEAD ($subsha1). Depending on the options you use, it may checkout $sha1, rebase the $subsha1 onto $sha1, or merge $sha1 into $subsha1. This helps you keep up with changes in the upstream superproject. However, it's also useful to stay up to date with changes in the upstream subproject. Previous workflows for incorporating such changes include the ungainly: $ git submodule foreach 'git checkout $(git config --file $toplevel/.gitmodules submodule.$name.branch) && git pull' With this patch, all of the useful functionality for incorporating superproject changes can be reused to incorporate upstream subproject updates. When you specify --remote, the target $sha1 is replaced with a $sha1 of the submodule's origin/master tracking branch. If you want to merge a different tracking branch, you can configure the `submodule.<name>.branch` option in `.gitmodules`. You can override the `.gitmodules` configuration setting for a particular superproject by configuring the option in that superproject's default configuration (using the usual configuration hierarchy, e.g. `.git/config`, `~/.gitconfig`, etc.). Previous use of submodule.<name>.branch ======================================= Because we're adding a new configuration option, it's a good idea to check if anyone else is already using the option. The foreach-pull example above was described by Ævar in commit f030c96d8643fa0a1a9b2bd9c2f36a77721fb61f Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Date: Fri May 21 16:10:10 2010 +0000 git-submodule foreach: Add $toplevel variable Gerrit uses the same interpretation for the setting, but because Gerrit has direct access to the subproject repositories, it updates the superproject repositories automatically when a subproject changes. Gerrit also accepts the special value '.', which it expands into the superproject's branch name. Although the --remote functionality is using `submodule.<name>.branch` slightly differently, the effect is the same. The foreach-pull example uses the option to record the name of the local branch to checkout before pulls. The tracking branch to be pulled is recorded in `.git/modules/<name>/config`, which was initialized by the module clone during `submodule add` or `submodule init`. Because the branch name stored in `submodule.<name>.branch` was likely the same as the branch name used during the initial `submodule add`, the same branch will be pulled in each workflow. Implementation details ====================== In order to ensure a current tracking branch state, `update --remote` fetches the submodule's remote repository before calculating the SHA-1. However, I didn't change the logic guarding the existing fetch: if test -z "$nofetch" then # Run fetch only if $sha1 isn't present or it # is not reachable from a ref. (clear_local_git_env; cd "$path" && ( (rev=$(git rev-list -n 1 $sha1 --not --all 2>/dev/null) && test -z "$rev") || git-fetch)) || die "$(eval_gettext "Unable to fetch in submodule path '\$path'")" fi There will not be a double-fetch, because the new $sha1 determined after the `--remote` triggered fetch should always exist in the repository. If it doesn't, it's because some racy process removed it from the submodule's repository and we *should* be re-fetching. Signed-off-by: W. Trevor King <wking@tremily.us> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-19t9020: use configured Python to run the test helperJunio C Hamano1-3/+7
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-19t3600: Avoid "cp -a", which is a GNUismJunio C Hamano1-3/+3
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-19Merge branch 'jc/maint-test-portability' into 'jc/test-portability'Junio C Hamano3-6/+8
* jc/maint-test-portability: t4014: fix arguments to grep t9502: do not assume GNU tar t0200: "locale" may not exist
2012-12-19t4014: fix arguments to grepJunio C Hamano1-3/+3
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-19t9502: do not assume GNU tarJunio C Hamano1-1/+1
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>