summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-10-19resolve_ref(): report breakage to the caller without warningLibravatar Junio C Hamano1-7/+11
629cd3a (resolve_ref(): emit warnings for improperly-formatted references, 2011-09-15) made resolve_ref() warn against files that are found in the directories the ref dwimmery looks at. The intent may be good, but these messages come from a wrong level of the API hierarchy. Instead record the breakage in "flags" whose purpose is to explain the result of the function to the caller, who is in a much better position to make intelligent decision based on the information. This updates sha1_name.c::dwim_ref() to warn against such a broken candidate only when it does not appear directly below $GIT_DIR to restore the traditional behaviour, as we know many files directly underneath $GIT_DIR/ are not refs. Warning against "git show config --" with "$GIT_DIR/config does not look like a well-formed ref" does not make sense, and we may later tweak the dwimmery not to even consider them as candidates, but that is a longer term topic. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-19resolve_ref(): expose REF_ISBROKEN flagLibravatar Junio C Hamano2-9/+9
Instead of keeping this as an internal API, let the callers find out the reason why resolve_ref() returned NULL is not because there was no such file in $GIT_DIR but because a file was corrupt. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-12refs.c: move dwim_ref()/dwim_log() from sha1_name.cLibravatar Junio C Hamano2-85/+85
Both dwim_ref()/dwim_log() functions are intimately related to the ref parsing rules defined in refs.c and better fits there. Move them together with substitute_branch_name(), a file scope static helper function. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05add_ref(): verify that the refname is formatted correctlyLibravatar Michael Haggerty2-5/+19
In add_ref(), verify that the refname is formatted correctly before adding it to the ref_list. Here we have to allow refname components that start with ".", since (for example) the remote protocol uses synthetic reference name ".have". So add a new REFNAME_DOT_COMPONENT flag that can be passed to check_refname_format() to allow leading dots. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): expand documentationLibravatar Michael Haggerty2-13/+33
Record information about resolve_ref(), hard-won via reverse engineering, in a comment for future spelunkers. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): also treat a too-long SHA1 as invalidLibravatar Michael Haggerty1-1/+2
If the SHA1 in a reference file is not terminated by a space or end-of-file, consider it malformed and emit a warning. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): emit warnings for improperly-formatted referencesLibravatar Michael Haggerty1-2/+4
While resolving references, if a reference is found that is in an unrecognized format, emit a warning (and then fail, as before). Wouldn't *you* want to know? Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): verify that the input refname has the right formatLibravatar Michael Haggerty1-0/+3
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05remote: avoid passing NULL to read_ref()Libravatar Michael Haggerty1-2/+4
read_ref() can (and in test t5800, actually *does*) return NULL. Don't pass the NULL along to read_ref(). Coincidentally, this mistake didn't make resolve_ref() blow up, but upcoming changes to resolve_ref() will make it less forgiving. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05remote: use xstrdup() instead of strdup()Libravatar Michael Haggerty2-3/+3
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): do not follow incorrectly-formatted symbolic refsLibravatar Michael Haggerty1-0/+5
Emit a warning and fail if a symbolic reference refers to an incorrectly-formatted refname. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): extract a function get_packed_ref()Libravatar Michael Haggerty1-13/+34
Making it a function and giving it a name makes the code clearer. I also have a strong suspicion that the function will find other uses in the future. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): turn buffer into a proper string as soon as possibleLibravatar Michael Haggerty1-10/+10
Immediately strip off trailing spaces and null-terminate the string holding the contents of the reference file; this allows the use of string functions and avoids the need to keep separate track of the string's length. (get_sha1_hex() fails automatically if the string is too short.) Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): only follow a symlink that contains a valid, normalized refnameLibravatar Michael Haggerty1-1/+2
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): use prefixcmp()Libravatar Michael Haggerty1-2/+2
Terminate the link content string one step earlier, allowing prefixcmp() to be used instead of the less clear memcmp(). Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05resolve_ref(): explicitly fail if a symlink is not readableLibravatar Michael Haggerty1-0/+2
Previously the failure came later, after a few steps in which the length was treated like the actual length of a string. Even though the old code gave the same answers, it was somewhat misleading. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05Change check_refname_format() to reject unnormalized refnamesLibravatar Michael Haggerty5-28/+49
Since much of the infrastructure does not work correctly with unnormalized refnames, change check_refname_format() to reject them. Similarly, change "git check-ref-format" to reject unnormalized refnames by default. But add an option --normalize, which causes "git check-ref-format" to normalize the refname before checking its format, and print the normalized refname. This is exactly the behavior of the old --print option, which is retained but deprecated. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05Inline function refname_format_print()Libravatar Michael Haggerty1-9/+7
Soon we will make printing independent of collapsing. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05Make collapse_slashes() allocate memory for its resultLibravatar Michael Haggerty1-9/+10
This will make upcoming changes a tiny bit easier. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05Do not allow ".lock" at the end of any refname componentLibravatar Michael Haggerty3-9/+7
Allowing any refname component to end with ".lock" is looking for trouble; for example, $ git br foo.lock/bar $ git br foo fatal: Unable to create '[...]/.git/refs/heads/foo.lock': File exists. Therefore, do not allow any refname component to end with ".lock". Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05Refactor check_refname_format()Libravatar Michael Haggerty1-40/+55
Among other things, extract a function check_refname_component(). Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05Change check_ref_format() to take a flags argumentLibravatar Michael Haggerty20-126/+69
Change check_ref_format() to take a flags argument that indicates what is acceptable in the reference name (analogous to "git check-ref-format"'s "--allow-onelevel" and "--refspec-pattern"). This is more convenient for callers and also fixes a failure in the test suite (and likely elsewhere in the code) by enabling "onelevel" and "refspec-pattern" to be allowed independently of each other. Also rename check_ref_format() to check_refname_format() to make it obvious that it deals with refnames rather than references themselves. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05Change bad_ref_char() to return a boolean valueLibravatar Michael Haggerty1-9/+6
Previously most bad characters were indicated by returning 1, but "*" was special-cased to return 2 instead of 1. One caller examined the return value to see whether the special case occurred. But it is easier (to document and understand) for bad_ref_char() simply to return a boolean value, treating "*" like any other bad character. Special-case the handling of "*" (which only occurs in very specific circumstances) at the caller. The resulting calling code thereby also becomes more transparent. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05git check-ref-format: add options --allow-onelevel and --refspec-patternLibravatar Michael Haggerty3-21/+152
Also add tests of the new options. (Actually, one big reason to add the new options is to make it easy to test check_ref_format(), though the options should also be useful to other scripts.) Interpret the result of check_ref_format() based on which types of refnames are allowed. However, because check_ref_format() can only return a single value, one test case is still broken. Specifically, the case "git check-ref-format --onelevel '*'" incorrectly succeeds because check_ref_format() returns CHECK_REF_FORMAT_ONELEVEL for this refname even though the refname is also CHECK_REF_FORMAT_WILDCARD. The type of check that leads to this failure is used elsewhere in "real" code and could lead to bugs; it will be fixed over the next few commits. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05t1402: add some more testsLibravatar Michael Haggerty1-0/+9
The new tests reflect the status quo. Soon the rule for "*.lock" in refname components will be tightened up. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-10-05get_sha1_hex(): do not read past a NUL characterLibravatar Michael Haggerty2-1/+18
Previously, get_sha1_hex() would read one character past the end of a null-terminated string whose strlen was an even number less than 40. Although the function correctly returned -1 in these cases, the extra memory access might have been to uninitialized (or even, conceivably, unallocated) memory. Add a check to avoid reading past the end of a string. This problem was discovered by Thomas Rast <trast@student.ethz.ch> using valgrind. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-07RelNotes/1.7.7: minor fixesLibravatar Michael J Gruber1-26/+26
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-07Minor update to how-to maintain gitLibravatar Junio C Hamano1-7/+6
A few more parts of this document is stale that needs updating to reflect the reality, but I do not regularly rebase topics that are only in "pu" anymore, which may be noteworthy for a commit. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-06Update draft release notes to 1.7.7Libravatar Junio C Hamano1-1/+6
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-06Merge branch 'rc/histogram-diff'Libravatar Junio C Hamano1-0/+2
* rc/histogram-diff: xdiff/xprepare: initialise xdlclassifier_t cf in xdl_prepare_env()
2011-09-06Merge branch 'cb/maint-ls-files-error-report'Libravatar Junio C Hamano1-10/+12
* cb/maint-ls-files-error-report: t3005: do not assume a particular order of stdout and stderr of git-ls-files
2011-09-06Merge branch 'mh/check-ref-format-print-normalize'Libravatar Junio C Hamano3-4/+13
* mh/check-ref-format-print-normalize: Forbid DEL characters in reference names check-ref-format --print: Normalize refnames that start with slashes
2011-09-06Sync with 1.7.6.2Libravatar Junio C Hamano8-41/+21
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-06Git 1.7.6.2Libravatar Junio C Hamano4-4/+13
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-06Revert "Merge branch 'cb/maint-quiet-push' into maint"Libravatar Junio C Hamano6-39/+10
This reverts commit ffa69e61d3c5730bd4b65a465efc130b0ef3c7df, reversing changes made to 4a13c4d14841343d7caad6ed41a152fee550261d. Adding a new command line option to receive-pack and feed it from send-pack is not an acceptable way to add features, as there is no guarantee that your updated send-pack will be talking to updated receive-pack. New features need to be added via the capability mechanism negotiated over the protocol. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-02Update draft release notes to 1.7.7Libravatar Junio C Hamano1-2/+10
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-09-02Merge branch 'js/i18n-scripts-2'Libravatar Junio C Hamano1-35/+14
* js/i18n-scripts-2: bisect: take advantage of gettextln, eval_gettextln.
2011-09-02Merge branch 'tr/maint-t3903-misquoted-command'Libravatar Junio C Hamano1-1/+1
* tr/maint-t3903-misquoted-command: t3903: fix misquoted rev-parse invocation
2011-09-02Merge branch 'bc/bisect-test-use-shell-path'Libravatar Junio C Hamano1-1/+1
* bc/bisect-test-use-shell-path: t6030: use $SHELL_PATH to invoke user's preferred shell instead of bare sh
2011-09-02Merge branch 'va/p4-branch-import-test-update'Libravatar Junio C Hamano1-11/+8
* va/p4-branch-import-test-update: git-p4: simple branch tests edits
2011-09-02Merge branch 'tr/maint-strbuf-grow-nul-termination'Libravatar Junio C Hamano1-4/+5
* tr/maint-strbuf-grow-nul-termination: strbuf_grow(): maintain nul-termination even for new buffer
2011-09-02Merge branch 'tr/maint-ident-to-git-memmove'Libravatar Junio C Hamano1-2/+2
* tr/maint-ident-to-git-memmove: Use memmove in ident_to_git
2011-09-02Merge branch 'tr/maint-format-patch-empty-output'Libravatar Junio C Hamano2-4/+28
* tr/maint-format-patch-empty-output: Document negated forms of format-patch --to --cc --add-headers t4014: "no-add-headers" is actually called "no-add-header" t4014: invoke format-patch with --stdout where intended t4014: check for empty files from git format-patch --stdout
2011-09-02Merge branch 'gb/maint-am-stgit-author-to-from-fix'Libravatar Junio C Hamano1-1/+1
* gb/maint-am-stgit-author-to-from-fix: am: fix stgit patch mangling
2011-09-02Merge branch 'gb/maint-am-patch-format-error-message'Libravatar Junio C Hamano2-1/+15
* gb/maint-am-patch-format-error-message: am: format is in $patch_format, not parse_patch Conflicts: git-am.sh
2011-09-02Merge branch 'ms/daemon-timeout-is-in-seconds'Libravatar Junio C Hamano1-5/+5
* ms/daemon-timeout-is-in-seconds: git-daemon.txt: specify --timeout in seconds
2011-09-02Merge branch 'bg/t5540-osx-grep'Libravatar Junio C Hamano1-2/+6
* bg/t5540-osx-grep: t5540-http-test: shorten grep pattern
2011-09-02Merge branch 'jc/clean-exclude-doc'Libravatar Junio C Hamano2-6/+9
* jc/clean-exclude-doc: Documentation: clarify "git clean -e <pattern>"
2011-09-02Merge branch 'mg/maint-notes-C-doc'Libravatar Junio C Hamano1-2/+5
* mg/maint-notes-C-doc: git-notes.txt: clarify -C vs. copy and -F
2011-09-02Merge branch 'fg/submodule-ff-check-before-push'Libravatar Junio C Hamano7-0/+231
* fg/submodule-ff-check-before-push: push: Don't push a repository with unpushed submodules