summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-12-03push: allow already-exists advice to be disabledLibravatar Chris Rorvick4-2/+11
Add 'advice.pushAlreadyExists' option to disable the advice shown when an update is rejected for a reference that is not allowed to update at all (verses those that are allowed to fast-forward.) Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-03push: rename config variable for more general useLibravatar Chris Rorvick4-7/+10
The 'pushNonFastForward' advice config can be used to squelch several instances of push-related advice. Rename it to 'pushUpdateRejected' to cover other reject scenarios that are unrelated to fast-forwarding. Retain the old name for compatibility. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-03push: cleanup push rules commentLibravatar Chris Rorvick1-15/+17
Rewrite to remove inter-dependencies amongst the rules. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02push: clarify rejection of update to non-commit-ishLibravatar Chris Rorvick1-0/+5
Pushes must already (by default) update to a commit-ish due to the fast- forward check in set_ref_status_for_push(). But rejecting for not being a fast-forward suggests the situation can be resolved with a merge. Flag these updates (i.e., to a blob or a tree) as not forwardable so the user is presented with more appropriate advice. While updating *from* a tag object is potentially destructive, updating *to* a tag is not. Additionally, a push to the refs/tags/ hierarchy is already excluded from fast-forwarding, and refs/heads/ is protected from anything but commit objects by a check in write_ref_sha1(). Thus someone fast-forwarding to a tag is probably not doing so by accident. Since updating to a tag is benign and unlikely to cause confusion, allow it in case someone finds the behavior useful. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02push: require force for annotated tagsLibravatar Chris Rorvick3-7/+35
Do not allow fast-forwarding of references that point to a tag object. Updating from a tag is potentially destructive since it would likely leave the tag dangling. Disallowing updates to a tag also makes sense semantically and is consistent with the behavior of lightweight tags. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02push: require force for refs under refs/tags/Libravatar Chris Rorvick9-13/+62
References are allowed to update from one commit-ish to another if the former is an ancestor of the latter. This behavior is oriented to branches which are expected to move with commits. Tag references are expected to be static in a repository, though, thus an update to something under refs/tags/ should be rejected unless the update is forced. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02push: flag updates that require forceLibravatar Chris Rorvick3-5/+12
Add a flag for indicating an update to a reference requires force. Currently the `nonfastforward` flag is used for this when generating the status message. A separate flag insulates dependent logic from the details of set_ref_status_for_push(). Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02push: keep track of "update" state separatelyLibravatar Chris Rorvick2-7/+12
If the reference exists on the remote and it is not being removed, then mark as an update. This is in preparation for handling tags (lightweight and annotated) exceptionally. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02push: add advice for rejected tag referenceLibravatar Chris Rorvick5-0/+25
Advising the user to fetch and merge only makes sense if the rejected reference is a branch. If none of the rejections are for branches, just tell the user the reference already exists. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02push: return reject reasons as a bitsetLibravatar Chris Rorvick4-24/+19
Pass all rejection reasons back from transport_push(). The logic is simpler and more flexible with regard to providing useful feedback. Signed-off-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-11-09Merge branch 'ph/maint-submodule-status-fix'Libravatar Jeff King2-5/+3
Cleans up some leftover bits from an earlier submodule change. * ph/maint-submodule-status-fix: submodule status: remove unused orig_* variables t7407: Fix recursive submodule test
2012-11-09Merge branch 'nd/builtin-to-libgit'Libravatar Jeff King22-1497/+1535
Code cleanups so that libgit.a does not depend on anything in the builtin/ directory. * nd/builtin-to-libgit: fetch-pack: move core code to libgit.a fetch-pack: remove global (static) configuration variable "args" send-pack: move core code to libgit.a Move setup_diff_pager to libgit.a Move print_commit_list to libgit.a Move estimate_bisect_steps to libgit.a Move try_merge_command and checkout_fast_forward to libgit.a
2012-11-09Merge branch 'nd/tree-walk-enum-cleanup'Libravatar Jeff King1-4/+4
* nd/tree-walk-enum-cleanup: tree-walk: use enum interesting instead of integer
2012-11-09Merge branch 'sz/maint-curl-multi-timeout'Libravatar Jeff King1-0/+12
Sometimes curl_multi_timeout() function suggested a wrong timeout value when there is no file descriptors to wait on and the http transport ended up sleeping for minutes in select(2) system call. Detect this and reduce the wait timeout in such a case. * sz/maint-curl-multi-timeout: Fix potential hang in https handshake
2012-11-09Merge branch 'fc/completion-send-email-with-format-patch'Libravatar Jeff King2-17/+23
* fc/completion-send-email-with-format-patch: completion: add format-patch options to send-email
2012-11-09Merge branch 'mo/cvs-server-cleanup'Libravatar Jeff King3-215/+440
Cleanups to prepare for mo/cvs-server-updates. * mo/cvs-server-cleanup: Use character class for sed expression instead of \s cvsserver status: provide real sticky info cvsserver: cvs add: do not expand directory arguments cvsserver: use whole CVS rev number in-process; don't strip "1." prefix cvsserver: split up long lines in req_{status,diff,log} cvsserver: clean up client request handler map comments cvsserver: remove unused functions _headrev and gethistory cvsserver update: comment about how we shouldn't remove a user-modified file cvsserver: add comments about database schema/usage cvsserver: removed unused sha1Or-k mode from kopts_from_path cvsserver t9400: add basic 'cvs log' test
2012-11-09Merge branch 'km/send-email-compose-encoding'Libravatar Jeff King3-5/+116
"git send-email --compose" can let the user create a non-ascii cover letter message, but there was not a way to mark it with appropriate content type before sending it out. Further updates fix subject quoting. * km/send-email-compose-encoding: git-send-email: add rfc2047 quoting for "=?" git-send-email: introduce quote_subject() git-send-email: skip RFC2047 quoting for ASCII subjects git-send-email: use compose-encoding for Subject git-send-email: introduce compose-encoding
2012-11-09Merge branch 'js/format-2047'Libravatar Jeff King5-126/+262
Fixes many rfc2047 quoting issues in the output from format-patch. * js/format-2047: format-patch tests: check quoting/encoding in To: and Cc: headers format-patch: fix rfc2047 address encoding with respect to rfc822 specials format-patch: make rfc2047 encoding more strict format-patch: introduce helper function last_line_length() format-patch: do not wrap rfc2047 encoded headers too late format-patch: do not wrap non-rfc2047 headers too early utf8: fix off-by-one wrapping of text
2012-11-09Merge branch 'rs/lock-correct-ref-during-delete'Libravatar Jeff King1-13/+5
When "update-ref -d --no-deref SYM" tried to delete a symbolic ref SYM, it incorrectly locked the underlying reference pointed by SYM, not the symbolic ref itself. * rs/lock-correct-ref-during-delete: refs: lock symref that is to be deleted, not its target
2012-11-09Merge branch 'nd/attr-match-optim-more'Libravatar Jeff King6-88/+186
Start laying the foundation to build the "wildmatch" after we can agree on its desired semantics. * nd/attr-match-optim-more: attr: more matching optimizations from .gitignore gitignore: make pattern parsing code a separate function exclude: split pathname matching code into a separate function exclude: fix a bug in prefix compare optimization exclude: split basename matching code into a separate function exclude: stricten a length check in EXC_FLAG_ENDSWITH case
2012-11-09Merge branch 'mh/maint-parse-dirstat-fix'Libravatar Jeff King1-19/+21
Cleans up some code and avoids a potential bug. * mh/maint-parse-dirstat-fix: parse_dirstat_params(): use string_list to split comma-separated string
2012-11-04Merge branch 'tj/maint-doc-commit-sign'Libravatar Jeff King1-1/+5
* tj/maint-doc-commit-sign: Add -S, --gpg-sign option to manpage of "git commit"
2012-11-04Merge branch 'pp/maint-doc-pager-config'Libravatar Jeff King1-4/+4
* pp/maint-doc-pager-config: Documentation: improve the example of overriding LESS via core.pager
2012-11-04Merge branch 'km/maint-doc-git-reset'Libravatar Jeff King1-4/+4
* km/maint-doc-git-reset: doc: git-reset: make "<mode>" optional
2012-11-04Merge branch 'tb/maint-t9200-case-insensitive'Libravatar Jeff King1-1/+1
* tb/maint-t9200-case-insensitive: Fix t9200 on case insensitive file systems
2012-11-04Merge branch 'rf/maint-mailmap-off-by-one'Libravatar Jeff King1-1/+1
* rf/maint-mailmap-off-by-one: mailmap: avoid out-of-bounds memory access
2012-11-04Merge branch 'gb/maint-doc-svn-log-window-size'Libravatar Jeff King1-0/+7
* gb/maint-doc-svn-log-window-size: Document git-svn fetch --log-window-size parameter
2012-11-04Merge branch 'sz/maint-submodule-reference-arg'Libravatar Jeff King1-1/+0
* sz/maint-submodule-reference-arg: submodule add: fix handling of --reference=<repo> option
2012-11-04Merge branch 'sl/maint-configure-messages'Libravatar Jeff King1-2/+2
Minor message fixes for the configure script. * sl/maint-configure-messages: configure: fix some output message
2012-11-04Merge branch 'po/maint-refs-replace-docs'Libravatar Jeff King1-0/+6
The refs/replace hierarchy was not mentioned in the repository-layout docs. * po/maint-refs-replace-docs: Doc repository-layout: Show refs/replace
2012-11-04Merge branch 'ph/pull-rebase-detached'Libravatar Jeff King1-0/+1
Avoids spewing error messages when using "pull --rebase" on a detached HEAD. * ph/pull-rebase-detached: git-pull: Avoid merge-base on detached head
2012-11-04Merge branch 'mm/maint-doc-remote-tracking'Libravatar Jeff King4-6/+6
We long ago hyphenated "remote-tracking branch"; this catches some new instances added since then. * mm/maint-doc-remote-tracking: Documentation: remote tracking branch -> remote-tracking branch
2012-10-29Add -S, --gpg-sign option to manpage of "git commit"Libravatar Tom Jones1-1/+5
git commit -S, --gpg-sign was mentioned in the program's help message, but not in the manpage. This adds an equivalent entry for the option in the manpage. Signed-off-by: Tom Jones <tom@oxix.org> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29Merge branch 'rs/branch-del-symref'Libravatar Jeff King2-26/+68
A symbolic ref refs/heads/SYM was not correctly removed with "git branch -d SYM"; the command removed the ref pointed by SYM instead. * rs/branch-del-symref: branch: show targets of deleted symrefs, not sha1s branch: skip commit checks when deleting symref branches branch: delete symref branch, not its target branch: factor out delete_branch_config() branch: factor out check_branch_commit()
2012-10-29Merge branch 'nd/status-long'Libravatar Jeff King3-6/+30
Allow an earlier "--short" option on the command line to be countermanded with the "--long" option for "git status" and "git commit". * nd/status-long: status: add --long output format option
2012-10-29Merge branch 'jk/sh-setup-in-filter-branch'Libravatar Jeff King3-54/+59
Refactoring to avoid code duplication in shell scripts. * jk/sh-setup-in-filter-branch: filter-branch: use git-sh-setup's ident parsing functions git-sh-setup: refactor ident-parsing functions
2012-10-29Merge branch 'nd/grep-true-path'Libravatar Jeff King4-17/+51
"git grep -e pattern <tree>" asked the attribute system to read "<tree>:.gitattributes" file in the working tree, which was nonsense. * nd/grep-true-path: grep: stop looking at random places for .gitattributes
2012-10-29Merge branch 'jk/maint-http-init-not-in-result-handler'Libravatar Jeff King3-14/+12
Further clean-up to the http codepath that picks up results after cURL library is done with one request slot. * jk/maint-http-init-not-in-result-handler: http: do not set up curl auth after a 401 remote-curl: do not call run_slot repeatedly
2012-10-29Merge branch 'jc/grep-pcre-loose-ends'Libravatar Jeff King7-129/+225
"git log -F -E --grep='<ere>'" failed to use the given <ere> pattern as extended regular expression, and instead looked for the string literally. The early part of this series is a fix for it; the latter part teaches log to respect the grep.* configuration. * jc/grep-pcre-loose-ends: log: honor grep.* configuration log --grep: accept --basic-regexp and --perl-regexp log --grep: use the same helper to set -E/-F options as "git grep" revisions: initialize revs->grep_filter using grep_init() grep: move pattern-type bits support to top-level grep.[ch] grep: move the configuration parsing logic to grep.[ch] builtin/grep.c: make configuration callback more reusable
2012-10-29Merge branch 'jl/submodule-add-by-name'Libravatar Jeff King5-14/+121
If you remove a submodule, in order to keep the repository so that "git checkout" to an older commit in the superproject history can resurrect the submodule, the real repository will stay in $GIT_DIR of the superproject. A later "git submodule add $path" to add a different submodule at the same path will fail. Diagnose this case a bit better, and if the user really wants to add an unrelated submodule at the same path, give the "--name" option to give it a place in $GIT_DIR of the superproject that does not conflict with the original submodule. * jl/submodule-add-by-name: submodule add: Fail when .git/modules/<name> already exists unless forced Teach "git submodule add" the --name option
2012-10-29Merge branch 'jl/submodule-rm'Libravatar Jeff King5-15/+550
"git rm submodule" cannot blindly remove a submodule directory as its working tree may have local changes, and worse yet, it may even have its repository embedded in it. Teach it some special cases where it is safe to remove a submodule, specifically, when there is no local changes in the submodule working tree, and its repository is not embedded in its working tree but is elsewhere and uses the gitfile mechanism to point at it. * jl/submodule-rm: submodule: teach rm to remove submodules unless they contain a git directory
2012-10-29fetch-pack: move core code to libgit.aLibravatar Nguyễn Thái Ngọc Duy3-948/+952
fetch_pack() is used by transport.c, part of libgit.a while it stays in builtin/fetch-pack.c. Move it to fetch-pack.c so that we won't get undefined reference if a program that uses libgit.a happens to pull it in. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29submodule status: remove unused orig_* variablesLibravatar Jens Lehmann1-3/+1
When renaming orig_args to orig_flags in 98dbe63d (submodule: only preserve flags across recursive status/update invocations) the call site of the recursive cmd_status was forgotten. At that place orig_args is still passed into the recursion, which is always empty since then. This did not break anything because the orig_flags logic is not needed at all when a function from the submodule script is called with eval, as that inherits all the variables set by the option parsing done in the first level of the recursion. Now that we know that orig_flags and orig_args aren't needed at all, let's just remove them from cmd_status(). Thanks-to: Phil Hord <hordp@cisco.com> Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29t7407: Fix recursive submodule testLibravatar Phil Hord1-2/+2
A test in t7404-submodule-foreach purports to test that the --cached flag is properly noticed by --recursive calls to the foreach command as it descends into nested submodules. However, the test really does not perform this test since the change it looks for is in a top-level submodule handled by the first invocation of the command. To properly test for the flag being passed to recursive invocations, the change must be buried deeper in the hierarchy. Move the change one level deeper so it properly verifies the recursive machinery of the 'git submodule status' command. Signed-off-by: Phil Hord <hordp@cisco.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29fetch-pack: remove global (static) configuration variable "args"Libravatar Nguyễn Thái Ngọc Duy1-77/+83
This helps removes the hack in fetch_pack() that copies my_args to args. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29send-pack: move core code to libgit.aLibravatar Nguyễn Thái Ngọc Duy4-333/+350
send_pack() is used by transport.c, part of libgit.a while it stays in builtin/send-pack.c. Move it to send-pack.c so that we won't get undefined reference if a program that uses libgit.a happens to pull it in. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29Move setup_diff_pager to libgit.aLibravatar Nguyễn Thái Ngọc Duy7-53/+52
This is used by diff-no-index.c, part of libgit.a while it stays in builtin/diff.c. Move it to diff.c so that we won't get undefined reference if a program that uses libgit.a happens to pull it in. While at it, move check_pager from git.c to pager.c. It makes more sense there and pager.c is also part of libgit.a Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29Move print_commit_list to libgit.aLibravatar Nguyễn Thái Ngọc Duy4-14/+14
This is used by bisect.c, part of libgit.a while it stays in builtin/rev-list.c. Move it to commit.c so that we won't get undefined reference if a program that uses libgit.a happens to pull it in. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29Move estimate_bisect_steps to libgit.aLibravatar Nguyễn Thái Ngọc Duy2-39/+38
This function is used by bisect.c, part of libgit.a while estimate_bisect_steps stays in builtin/rev-list.c. Move it to bisect.a so we won't have undefine reference if a standalone program that uses libgit.a happens to pull it in. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29Move try_merge_command and checkout_fast_forward to libgit.aLibravatar Nguyễn Thái Ngọc Duy6-112/+125
These functions are called in sequencer.c, which is part of libgit.a. This makes libgit.a potentially require builtin/merge.c for external git commands. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jeff King <peff@peff.net>