summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-07-22push --force-with-lease: implement logic to populate old_sha1_expect[]Libravatar Junio C Hamano6-0/+87
This plugs the push_cas_option data collected by the command line option parser to the transport system with a new function apply_push_cas(), which is called after match_push_refs() has already been called. At this point, we know which remote we are talking to, and what remote refs we are going to update, so we can fill in the details that may have been missing from the command line, such as (1) what abbreviated refname the user gave us matches the actual refname at the remote; and (2) which remote-tracking branch in our local repository to read the value of the object to expect at the remote. to populate the old_sha1_expect[] field of each of the remote ref. As stated in the documentation, the use of remote-tracking branch as the default is a tentative one, and we may come up with a better logic as we gain experience. Still nobody uses this information, which is the topic of the next patch. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-22remote.c: add command line option parser for "--force-with-lease"Libravatar Junio C Hamano5-11/+168
Update "git push" and "git send-pack" to parse this commnd line option. The intended sematics is: * "--force-with-lease" alone, without specifying the details, will protect _all_ remote refs that are going to be updated by requiring their current value to be the same as some reasonable default, unless otherwise specified; * "--force-with-lease=refname", without specifying the expected value, will protect that refname, if it is going to be updated, by requiring its current value to be the same as some reasonable default. * "--force-with-lease=refname:value" will protect that refname, if it is going to be updated, by requiring its current value to be the same as the specified value; and * "--no-force-with-lease" will cancel all the previous --force-with-lease on the command line. For now, "some reasonable default" is tentatively defined as "the value of the remote-tracking branch we have for the ref of the remote being updated", and it is an error if we do not have such a remote-tracking branch. But this is known to be fragile, its use is not yet recommended, and hopefully we will find more reasonable default as we gain experience with this feature. The manual marks the feature as experimental unless the expected value is specified explicitly for this reason. Because the command line options are parsed _before_ we know which remote we are pushing to, there needs further processing to the parsed data after we instantiate the transport object to: * expand "refname" given by the user to a full refname to be matched with the list of "struct ref" used in match_push_refs() and set_ref_status_for_push(); and * learning the actual local ref that is the remote-tracking branch for the specified remote ref. Further, some processing need to be deferred until we find the set of remote refs and match_push_refs() returns in order to find the ones that need to be checked after explicit ones have been processed for "--force-with-lease" (no specific details). These post-processing will be the topic of the next patch. This option was originally called "cas" (for "compare and swap"), the name which nobody liked because it was too technical. The second attempt called it "lockref" (because it is conceptually like pushing after taking a lock) but the word "lock" was hated because it implied that it may reject push by others, which is not the way this option works. This round calls it "force-with-lease". You assume you took the lease on the ref when you fetched to decide what the rebased history should be, and you can push back only if the lease has not been broken. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-08builtin/push.c: use OPT_BOOL, not OPT_BOOLEANLibravatar Junio C Hamano1-3/+3
The command line parser of "git push" for "--tags", "--delete", and "--thin" options still used outdated OPT_BOOLEAN. Because these options do not give escalating levels when given multiple times, they should use OPT_BOOL. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-08cache.h: move remote/connect API out of itLibravatar Junio C Hamano15-70/+87
The definition of "struct ref" in "cache.h", a header file so central to the system, always confused me. This structure is not about the local ref used by sha1-name API to name local objects. It is what refspecs are expanded into, after finding out what refs the other side has, to define what refs are updated after object transfer succeeds to what values. It belongs to "remote.h" together with "struct refspec". While we are at it, also move the types and functions related to the Git transport connection to a new header file connect.h Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-05Merge branch 'maint'Libravatar Junio C Hamano2-19/+0
* maint: fixup-builtins: retire an old transition helper script
2013-07-05Merge branch 'tr/test-v-and-v-subtest-only'Libravatar Junio C Hamano6-53/+276
Allows N instances of tests run in parallel, each running 1/N parts of the test suite under Valgrind, to speed things up. * tr/test-v-and-v-subtest-only: perf-lib: fix start/stop of perf tests test-lib: support running tests under valgrind in parallel test-lib: allow prefixing a custom string before "ok N" etc. test-lib: valgrind for only tests matching a pattern test-lib: verbose mode for only tests matching a pattern test-lib: self-test that --verbose works test-lib: rearrange start/end of test_expect_* and test_skip test-lib: refactor $GIT_SKIP_TESTS matching test-lib: enable MALLOC_* for the actual tests
2013-07-03fixup-builtins: retire an old transition helper scriptLibravatar Ramkumar Ramachandra2-19/+0
This script was added in 36e5e70 (Start deprecating "git-command" in favor of "git command", 2007-06-30) with the intent of aiding the transition away from dashed forms. It has already been used to help the transision and served its purpose, and is no longer very useful for follow-up work, because the majority of remaining matches it finds are false positives. Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-03Merge branch 'maint'Libravatar Junio C Hamano2-1/+16
* maint: Update draft release notes to 1.8.3.3 git-config: update doc for --get with multiple values
2013-07-03Update draft release notes to 1.8.3.3Libravatar Junio C Hamano1-0/+15
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-03Merge branch 'rr/diffcore-pickaxe-doc' into maintLibravatar Junio C Hamano3-28/+59
* rr/diffcore-pickaxe-doc: diffcore-pickaxe doc: document -S and -G properly diffcore-pickaxe: make error messages more consistent
2013-07-03Merge branch 'cr/git-work-tree-sans-git-dir' into maintLibravatar Junio C Hamano1-3/+1
* cr/git-work-tree-sans-git-dir: git.txt: remove stale comment regarding GIT_WORK_TREE
2013-07-03Merge branch 'fc/do-not-use-the-index-in-add-to-index' into maintLibravatar Junio C Hamano1-3/+3
* fc/do-not-use-the-index-in-add-to-index: read-cache: trivial style cleanups read-cache: fix wrong 'the_index' usage
2013-07-03Merge branch 'dm/unbash-subtree' into maintLibravatar Junio C Hamano1-1/+1
* dm/unbash-subtree: contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash
2013-07-03Merge branch 'jc/core-checkstat' into maintLibravatar Junio C Hamano1-1/+14
* jc/core-checkstat: deprecate core.statinfo at Git 2.0 boundary
2013-07-03Merge branch 'jc/t5551-posix-sed-bre' into maintLibravatar Junio C Hamano1-2/+6
* jc/t5551-posix-sed-bre: t5551: do not use unportable sed '\+'
2013-07-03Merge branch 'vv/help-unknown-ref' into maintLibravatar Junio C Hamano3-1/+57
* vv/help-unknown-ref: merge: use help_unknown_ref() help: add help_unknown_ref()
2013-07-03Merge branch 'rs/empty-archive' into maintLibravatar Junio C Hamano2-0/+15
* rs/empty-archive: t5004: resurrect original empty tar archive test t5004: avoid using tar for checking emptiness of archive Conflicts: t/t5004-archive-corner-cases.sh
2013-07-03Merge branch 'rh/merge-options-doc-fix' into maintLibravatar Junio C Hamano1-1/+2
* rh/merge-options-doc-fix: Documentation/merge-options.txt: restore `-e` option
2013-07-03Merge branch 'an/diff-index-doc' into maintLibravatar Junio C Hamano1-6/+6
* an/diff-index-doc: Documentation/diff-index: mention two modes of operation
2013-07-03Merge branch 'cm/gitweb-project-list-persistent-cgi-fix' into maintLibravatar Junio C Hamano1-1/+1
"gitweb" forgot to clear a global variable $search_regexp upon each request, mistakenly carrying over the previous search to a new one when used as a persistent CGI. * cm/gitweb-project-list-persistent-cgi-fix: gitweb: fix problem causing erroneous project list
2013-07-03Merge branch 'ar/wildmatch-foldcase' into maintLibravatar Junio C Hamano2-6/+56
The wildmatch engine did not honor WM_CASEFOLD option correctly. * ar/wildmatch-foldcase: wildmatch: properly fold case everywhere
2013-07-03Merge branch 'cb/log-follow-with-combined' into maintLibravatar Junio C Hamano2-0/+17
"git log -c --follow $path" segfaulted upon hitting the commit that renamed the $path being followed. * cb/log-follow-with-combined: fix segfault with git log -c --follow
2013-07-03Merge branch 'rr/die-on-missing-upstream' into maintLibravatar Junio C Hamano2-17/+22
When a reflog notation is used for implicit "current branch", we did not say which branch, and worse said "branch ''". * rr/die-on-missing-upstream: sha1_name: fix error message for @{<N>}, @{<date>} sha1_name: fix error message for @{u}
2013-07-03Merge branch 'maint-1.8.2' into maintLibravatar Junio C Hamano1-1/+1
* maint-1.8.2: git-config: update doc for --get with multiple values
2013-07-03Merge branch 'maint-1.8.1' into maint-1.8.2Libravatar Junio C Hamano1-1/+1
* maint-1.8.1: git-config: update doc for --get with multiple values
2013-07-03git-remote-mediawiki: un-brace file handles in binmode callsLibravatar Matthieu Moy1-2/+2
Commit e83d36b66fc turned "print STDOUT" into "print {*STDOUT}", as suggested by perlcritic. Unfortunately, it also changed two "binmode STDOUT" calls the same way, which does not work and yield a "Not a GLOB reference" error. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-03git-config: update doc for --get with multiple valuesLibravatar John Keeping1-1/+1
Since commit 00b347d (git-config: do not complain about duplicate entries, 2012-10-23), "git config --get" does not exit with an error if there are multiple values for the specified key but instead returns the last value. Update the documentation to reflect this. Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-01Merge branch 'maint'Libravatar Junio C Hamano2-3/+5
* maint: t7500: fix flipped actual/expect lib-rebase: document exec_ in FAKE_LINES
2013-07-01Update draft release notes to 1.8.4Libravatar Junio C Hamano1-0/+16
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-01Merge branch 'rr/remote-branch-config-refresh'Libravatar Junio C Hamano3-402/+480
The original way to specify remote repository using .git/branches/ used to have a nifty feature. The code to support the feature was still in a function but the caller was changed not to call it 5 years ago, breaking that feature and leaving the supporting code unreachable. * rr/remote-branch-config-refresh: t/t5505-remote: test multiple push/pull in remotes-file ls-remote doc: don't encourage use of branches-file ls-remote doc: rewrite <repository> paragraph ls-remote doc: fix example invocation on git.git t/t5505-remote: test url-with-# in branches-file remote: remove dead code in read_branches_file() t/t5505-remote: use test_path_is_missing t/t5505-remote: test push-refspec in branches-file t/t5505-remote: modernize style
2013-07-01Merge branch 'ed/color-prompt'Libravatar Junio C Hamano2-70/+182
Code clean-up for in-prompt status script (in contrib/). * ed/color-prompt: git-prompt.sh: add missing information in comments git-prompt.sh: do not print duplicate clean color code t9903: remove redundant tests git-prompt.sh: refactor colored prompt code t9903: add tests for git-prompt pcmode
2013-07-01Merge branch 'ap/rebase-multiple-fixups'Libravatar Junio C Hamano4-44/+130
Having multiple "fixup!" on a line in the rebase instruction sheet did not work very well with "git rebase -i --autosquash". * ap/rebase-multiple-fixups: lib-rebase: style: use write_script, <<-\EOF rebase -i: handle fixup! fixup! in --autosquash
2013-07-01Merge branch 'kb/am-deprecate-resolved'Libravatar Junio C Hamano5-10/+10
Promote "git am --continue" over "git am --resolved" for UI consistency. * kb/am-deprecate-resolved: am: replace uses of --resolved with --continue
2013-07-01Merge branch 'rr/column-doc'Libravatar Junio C Hamano1-3/+17
* rr/column-doc: column doc: rewrite documentation for column.ui
2013-07-01Merge branch 'ft/doc-git-transport'Libravatar Junio C Hamano1-0/+3
* ft/doc-git-transport: documentation: add git:// transport security notice
2013-07-01Merge branch 'sb/mailmap-merijn-brand'Libravatar Junio C Hamano1-0/+1
* sb/mailmap-merijn-brand: .mailmap: Map "H.Merijn Brand" to "H. Merijn Brand"
2013-07-01Merge branch 'sg/bash-prompt'Libravatar Junio C Hamano4-333/+367
* sg/bash-prompt: bash prompt: mention that PROMPT_COMMAND mode is faster bash prompt: avoid command substitution when finalizing gitstring bash prompt: avoid command substitution when checking for untracked files bash prompt: use bash builtins to check stash state bash prompt: use bash builtins to check for unborn branch for dirty state bash prompt: combine 'git rev-parse' for detached head bash prompt: combine 'git rev-parse' executions in the main code path bash prompt: use bash builtins to find out current branch bash prompt: use bash builtins to find out rebase state bash prompt: run 'git rev-parse --git-dir' directly instead of __gitdir() bash prompt: return early from __git_ps1() when not in a git repository bash prompt: print unique detached HEAD abbreviated object name bash prompt: add a test for symbolic link symbolic refs completion, bash prompt: move __gitdir() tests to completion test suite bash prompt: use 'write_script' helper in interactive rebase test bash prompt: fix redirection coding style in tests
2013-07-01Merge branch 'wk/doc-in-linux-3.x-era'Libravatar Junio C Hamano6-41/+47
Update documentation to match more recent realities. * wk/doc-in-linux-3.x-era: Documentation: Update 'linux-2.6.git' -> 'linux.git' Documentation: Update the NFS remote examples to use the staging repo doc/clone: Pick more compelling paths for the --reference example doc/clone: Remove the '--bare -l -s' example
2013-07-01Merge branch 'jc/topo-author-date-sort'Libravatar Junio C Hamano16-163/+550
"git log" learned the "--author-date-order" option, with which the output is topologically sorted and commits in parallel histories are shown intermixed together based on the author timestamp. * jc/topo-author-date-sort: t6003: add --author-date-order test topology tests: teach a helper to set author dates as well t6003: add --date-order test topology tests: teach a helper to take abbreviated timestamps t/lib-t6000: style fixes log: --author-date-order sort-in-topological-order: use prio-queue prio-queue: priority queue of pointers to structs toposort: rename "lifo" field
2013-07-01Merge branch 'jk/commit-info-slab'Libravatar Junio C Hamano3-10/+127
Allow adding custom information to commit objects in order to represent unbound number of flag bits etc. * jk/commit-info-slab: commit-slab: introduce a macro to define a slab for new type commit-slab: avoid large realloc commit: allow associating auxiliary info on-demand
2013-07-01lib-rebase: style: use write_script, <<-\EOFLibravatar Andrew Pimlott1-38/+36
Signed-off-by: Andrew Pimlott <andrew@pimlott.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-01t7500: fix flipped actual/expectLibravatar Andrew Pimlott1-3/+3
Signed-off-by: Andrew Pimlott <andrew@pimlott.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-07-01lib-rebase: document exec_ in FAKE_LINESLibravatar Andrew Pimlott1-0/+2
Signed-off-by: Andrew Pimlott <andrew@pimlott.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-30Merge branch 'maint'Libravatar Junio C Hamano3-3/+14
* maint: Start preparing for 1.8.3.3 check-ignore doc: fix broken link to ls-files page test: spell 'ls-files --delete' option correctly in test descriptions
2013-06-30Update draft release notes to 1.8.4Libravatar Junio C Hamano1-0/+23
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-06-30Merge branch 'mh/ref-races'Libravatar Junio C Hamano6-134/+466
"git pack-refs" that races with new ref creation or deletion have been susceptible to lossage of refs under right conditions, which has been tightened up. * mh/ref-races: for_each_ref: load all loose refs before packed refs get_packed_ref_cache: reload packed-refs file when it changes add a stat_validity struct Extract a struct stat_data from cache_entry packed_ref_cache: increment refcount when locked do_for_each_entry(): increment the packed refs cache refcount refs: manage lifetime of packed refs cache via reference counting refs: implement simple transactions for the packed-refs file refs: wrap the packed refs cache in a level of indirection pack_refs(): split creation of packed refs and entry writing repack_without_ref(): split list curation and entry writing
2013-06-30Merge branch 'ap/diff-ignore-blank-lines'Libravatar Junio C Hamano10-8/+439
"git diff" learned a mode that ignores hunks whose change consists only of additions and removals of blank lines, which is the same as "diff -B" (ignore blank lines) of GNU diff. * ap/diff-ignore-blank-lines: diff: add --ignore-blank-lines option
2013-06-30Merge branch 'mh/loose-refs-race-with-pack-ref'Libravatar Junio C Hamano1-34/+72
We read loose and packed rerferences in two steps, but after deciding to read a loose ref but before actually opening it to read it, another process racing with us can unlink it, which would cause us to barf. Update the codepath to retry when such a race is detected. * mh/loose-refs-race-with-pack-ref: resolve_ref_unsafe(): close race condition reading loose refs resolve_ref_unsafe(): handle the case of an SHA-1 within loop resolve_ref_unsafe(): extract function handle_missing_loose_ref()
2013-06-30Merge branch 'nk/name-rev-abbreviated-refs'Libravatar Junio C Hamano2-8/+31
"git name-rev --refs=tags/v*" were forbidden, which was a bit inconvenient (you had to give a pattern to match refs fully, like --refs=refs/tags/v*). * nk/name-rev-abbreviated-refs: name-rev: allow to specify a subpath for --refs option
2013-06-30Merge branch 'jk/submodule-subdirectory-ok'Libravatar Junio C Hamano9-213/+673
Allow various subcommands of "git submodule" to be run not from the top of the working tree of the superproject. * jk/submodule-subdirectory-ok: submodule: drop the top-level requirement rev-parse: add --prefix option submodule: show full path in error message t7403: add missing && chaining t7403: modernize style t7401: make indentation consistent