summaryrefslogtreecommitdiff
path: root/t
AgeCommit message (Collapse)AuthorFilesLines
2008-07-10builtin-rerere: more carefully find conflict markersLibravatar Olivier Marin1-6/+20
When a conflicting file contains a line that begin with "=======", rerere failed to parse conflict markers. This result to a wrong preimage file and an unexpected error for the user. The boundary between ours and theirs not just begin with 7 equals, but is followed by either a SP or a LF. This patch enforces parsing rules so that markers match in the right order, and when ambiguous, the command does not autoresolve the conflicted file. Especially because we are introducing rerere.autoupdate configuration (which is off by default for safety) that automatically stages the resolution made by rerere, it is necessary to make sure that we do not autoresolve when there is any ambiguity. Signed-off-by: Olivier Marin <dkr@freesurf.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-09apply: fix copy/rename breakageLibravatar Junio C Hamano1-0/+20
7ebd52a (Merge branch 'dz/apply-again', 2008-07-01) taught "git-apply" to grok a (non-git) patch that is a concatenation of separate patches that touch the same file number of times, by recording the postimage of patch application of previous round and using it as the preimage for later rounds. This "incremental" mode of patch application fundamentally contradicts with the way git rename/copy patches are designed. When a git patch talks about a file A getting modified, and a new file B created out of A, like this: diff --git a/A b/A --- a/A +++ b/A ... change text here ... diff --git a/A b/B copy from A copy to B --- a/A +++ b/B ... change text here ... the second change to produce B does not depend on what is done to A with the first change in any way. This is explicitly done so for reviewability of individual patches. With this commit, we do not look at 'fn_table' that records the postimage of previous round when applying a patch to produce a new file out of an existing file. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-09Merge branch 'js/apply-root'Libravatar Junio C Hamano1-0/+43
* js/apply-root: git-apply --directory: make --root more similar to GNU diff apply --root: thinkofix. Teach "git apply" to prepend a prefix with "--root=<root>"
2008-07-09t9100-git-svn-basic.sh: Fix determination of utf-8 localeLibravatar Ramsay Jones1-4/+4
When setting the GIT_SVN_LC_ALL variable, default to the $LANG environment variable, when the $LC_ALL override is not set. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-09t9113-*.sh: provide user feedback when test skippedLibravatar Ramsay Jones1-1/+7
Currently this test simply exits without providing any feedback at all. Tell user if the test is being skipped and provide a hint as to how the test may be enabled. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-09Merge branch 'maint'Libravatar Junio C Hamano2-1/+26
* maint: Start preparing release notes for 1.5.6.3 git-submodule - Fix bugs in adding an existing repo as a module bash: offer only paths after '--' Remove unnecessary pack-*.keep file after successful git-clone make deleting a missing ref more quiet
2008-07-08Avoid apache complaining about lack of server's FQDNLibravatar Mike Hommey1-0/+1
On some setups, apache will say: apache2: Could not reliably determine the server's fully qualified domain name, using $(IP_address) for ServerName Avoid this message polluting tests output by setting a ServerName in apache configuration. Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08Skip t5540-http-push test when USE_CURL_MULTI is undefinedLibravatar Mike Hommey1-0/+7
When USE_CURL_MULTI is undefined, git http-push doesn't work, so it's useless to test it. Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08Fix http-push testLibravatar Mike Hommey2-9/+11
http-push test has been broken by 4a7aaccd adding a space character in the place where the test is being run. Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08Catch failures from t5540-http-pushLibravatar Mike Hommey1-3/+4
git http-push doesn't handle packed-refs, and now the new builtin-clone created packed refs, the http-push test fails. Mark the current failure as such, and also catch third test's failure that went unreported because git push doesn't return an error code when it says: No refs in common and none specified; doing nothing. Which it does when http-push can't get a list of refs recursively from $URL/refs/. Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08t7701-repack-unpack-unreachable.sh: check timestamp of unpacked objectsLibravatar Brandon Casey1-0/+34
Unpacked objects should receive the timestamp of the pack they were unpacked from. Check. Signed-off-by: Brandon Casey <drafnel@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08Remove unnecessary pack-*.keep file after successful git-cloneLibravatar Shawn O. Pearce1-1/+19
Once a clone is successful we no longer need to hold onto the .keep file created by the transport. Delete the file so we can later repack the complete repository. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08avoid null SHA1 in oldest reflogLibravatar Jeff King1-1/+8
When the user specifies a ref by a reflog entry older than one we have (e.g., "HEAD@{20 years ago"}), we issue a warning and give them the "from" value of the oldest reflog entry. That is, we say "we don't know what happened before this entry, but before this we know we had some particular SHA1". However, the oldest reflog entry is often a creation event such as clone or branch creation. In this case, the entry claims that the ref went from "00000..." (the null sha1) to the new value, and the reflog lookup returns the null sha1. While this is technically correct (the entry tells us that the ref didn't exist at the specified time) it is not terribly useful to the end user. What they probably want instead is "the oldest useful sha1 that this ref ever had". This patch changes the behavior such that if the oldest ref would return the null sha1, it instead returns the first value the ref ever had. We never discovered this problem in the test scripts because we created "fake" reflogs that had only a specified segment of history. This patch updates the tests with a creation event at the beginning of history. Signed-off-by: Jeff King <peff@peff.net> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08make deleting a missing ref more quietLibravatar Jeff King1-0/+7
If git attempts to delete a ref, but the unlink of the ref file fails, we print a message to stderr. This is usually a good thing, but if the error is ENOENT, then it indicates that the ref has _already_ been deleted. And since that's our goal, it doesn't make sense to complain to the user. This harmonizes the error reporting behavior for the unpacked and packed cases; the packed case already printed nothing on ENOENT, but the unpacked printed unconditionally. Additionally, send-pack would, when deleting the tracking ref corresponding to a remote delete, print "Failed to delete" on any failure. This can be a misleading message, since we actually _did_ delete at the remote side, but we failed to delete locally. Rather than make the message more precise, let's just eliminate it entirely; the delete_ref routine already takes care of printing out a much more specific message about what went wrong. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-07Merge branch 'jc/rerere'Libravatar Junio C Hamano1-3/+13
* jc/rerere: rerere.autoupdate t4200: fix rerere test rerere: remove dubious "tail_optimization" git-rerere: detect unparsable conflicts rerere: rerere_created_at() and has_resolution() abstraction
2008-07-07Merge branch 'dr/ceiling'Libravatar Junio C Hamano4-4/+255
* dr/ceiling: Eliminate an unnecessary chdir("..") Add support for GIT_CEILING_DIRECTORIES Fold test-absolute-path into test-path-utils Implement normalize_absolute_path Conflicts: cache.h setup.c
2008-07-06git-apply --directory: make --root more similar to GNU diffLibravatar Junio C Hamano1-4/+4
Applying a patch in the directory that is different from what the patch records is done with --directory option in GNU diff. The --root option we introduced previously does the same, and we can call it the same way to give users more familiar feel. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05Fix apply --recount handling of no-EOL lineLibravatar Thomas Rast5-0/+28
If a patch modifies the last line of a file that previously had no terminating '\n', it looks like -old text \ No newline at end of file +new text Hence, a '\' line does not signal the end of the hunk. This modifies 'git apply --recount' to take this into account. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-04Merge branch 'maint'Libravatar Junio C Hamano2-0/+0
* maint: GIT 1.5.6.2 Fix executable bits in t/ scripts Work around gcc warnings from curl headers
2008-07-04Fix executable bits in t/ scriptsLibravatar Junio C Hamano2-0/+0
Pointed out by Ramsay Jones. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-04t4127-apply-same-fn: Avoid sed -iLibravatar Johannes Sixt1-11/+16
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-02Merge branch 'maint'Libravatar Junio C Hamano1-0/+2
* maint: Fix describe --tags --long so it does not segfault
2008-07-02Merge branch 'jc/maint-reset' into maintLibravatar Junio C Hamano1-0/+47
* jc/maint-reset: Allow "git-reset path" when unambiguous
2008-07-02Fix describe --tags --long so it does not segfaultLibravatar Shawn O. Pearce1-0/+2
If we match a lightweight (non-annotated tag) as the name to output and --long was requested we do not have a tag, nor do we have a tagged object to display. Instead we must use the object we were passed as input for the long format display. Reported-by: Mark Burton <markb@ordern.com> Backtraced-by: Mikael Magnusson <mikachu@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-02apply --root: thinkofix.Libravatar Junio C Hamano1-2/+13
The end of a string is string[length-1], not string[length+1]. I pointed it out during the review, but I forgot about it when applying the patch. This should fix it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-01Teach "git apply" to prepend a prefix with "--root=<root>"Libravatar Johannes Schindelin1-0/+32
With "git apply --root=<root>", all file names in the patch are prepended with <root>. If a "-p" value was given, the paths are stripped _before_ prepending <root>. Wished for by HPA. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-01Merge branch 'js/apply-recount'Libravatar Junio C Hamano1-35/+27
* js/apply-recount: Allow git-apply to recount the lines in a hunk (AKA recountdiff)
2008-07-01Merge branch 'jc/checkdiff'Libravatar Junio C Hamano2-0/+20
* jc/checkdiff: Fix t4017-diff-retval for white-space from wc Update sample pre-commit hook to use "diff --check" diff --check: detect leftover conflict markers Teach "diff --check" about new blank lines at end checkdiff: pass diff_options to the callback check_and_emit_line(): rename and refactor diff --check: explain why we do not care whether old side is binary
2008-07-01Merge branch 'jc/maint-reset'Libravatar Junio C Hamano1-0/+47
* jc/maint-reset: Allow "git-reset path" when unambiguous
2008-07-01Merge branch 'dz/apply-again'Libravatar Junio C Hamano1-0/+85
* dz/apply-again: git-apply: handle a patch that touches the same path more than once better
2008-06-30Add test results directory to t/.gitignoreLibravatar Brian Gernhardt1-0/+1
We don't need test results to be committed if we're fixing a test. Signed-off-by: Brian Gernhardt <benji@silverinsanity.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-29t9700: skip when Test::More is not availableLibravatar Junio C Hamano1-0/+5
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-29Fix t4017-diff-retval for white-space from wcLibravatar Brian Gernhardt1-1/+1
Signed-off-by: Brian Gernhardt <benji@silverinsanity.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-28Allow git-apply to recount the lines in a hunk (AKA recountdiff)Libravatar Johannes Schindelin1-35/+27
Sometimes, the easiest way to fix up a patch is to edit it directly, even adding or deleting lines. Now, many people are not as divine as certain benevolent dictators as to update the hunk headers correctly at the first try. So teach the tool to do it for us. [jc: with tests] Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-27git-apply: handle a patch that touches the same path more than once betterLibravatar Don Zickus1-0/+85
When working with a lot of people who backport patches all day long, every once in a while I get a patch that modifies the same file more than once inside the same patch. git-apply either fails if the second change relies on the first change or silently drops the first change if the second change is independent. The silent part is the scary scenario for us. Also this behaviour is different from the patch-utils. I have modified git-apply to create a table of the filenames of files it modifies such that if a later patch chunk modifies a file in the table it will buffer the previously changed file instead of reading the original file from disk. Logic has been put in to handle creations/deletions/renames/copies. All the relevant tests of git-apply succeed. A new test has been added to cover the cases I addressed. The fix is relatively straight-forward. Signed-off-by: Don Zickus <dzickus@redhat.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-26diff --check: detect leftover conflict markersLibravatar Junio C Hamano1-0/+14
This teaches "diff --check" to detect and complain if the change adds lines that look like leftover conflict markers. We should be able to remove the old Perl script used in the sample pre-commit hook and modernize the script with this facility. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-26Teach "diff --check" about new blank lines at endLibravatar Junio C Hamano1-0/+6
When a patch adds new blank lines at the end, "git apply --whitespace" warns. This teaches "diff --check" to do the same. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-26test-lib.sh: show git init output when in verbose modeLibravatar Lea Wiemann1-1/+1
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-26Merge branch 'maint'Libravatar Junio C Hamano1-0/+8
* maint: GIT 1.5.5.5 GIT 1.5.4.6 git-shell: accept "git foo" form diff --check: do not discard error status upon seeing a good line
2008-06-26diff --check: do not discard error status upon seeing a good lineLibravatar Junio C Hamano1-0/+8
"git diff --check" should return non-zero when there was any whitespace error but the code only paid attention to the error status of the last new line in the patch. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-26improve for-each-ref test scriptLibravatar Jeff King1-17/+70
Previously, we did a sanity check by doing for-each-ref using each possible format atom. However, we never checked the actual output produced by that atom, which recently let an obvious bug go undetected for some time. While we're at it, also clean up a few '!' into test_must_fail. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-25Allow "git-reset path" when unambiguousLibravatar Junio C Hamano1-0/+47
Resetting a selected set of index entries is done with "git reset -- paths" syntax, but we did not allow -- to be omitted even when the command is unambiguous. This updates the command to follow the general rule: * When -- appears, revs come before it, and paths come after it; * When there is no --, earlier ones are revs and the rest are paths, and we need to guess. When lack of -- marker forces us to guess, we protect from user errors and typoes by making sure what we treat as revs do not appear as filenames in the work tree, and what we treat as paths do appear as filenames in the work tree, and by erroring out if that is not the case. We tell the user to disambiguate by using -- in such a case. which is employed elsewhere in the system. When this rule is applied to "reset", because we can have only zero or one rev to the command, the check can be slightly simpler than other programs. We have to check only the first one or two tokens after the command name and options, and when they are: -- A: no explicit rev given; "A" and whatever follows it are paths. A --: explicit rev "A" given and whatever follows the "--" are paths. A B: "A" could be rev or path and we need to guess. "B" could be missing but if exists that (and everything that follows) would be paths. So we apply the guess only in the last case and only to "A" (not "B" and what comes after it). * As long as "A" is unambiguously a path, index entries for "A", "B" (and everything that follows) are reset to the HEAD revision. * If "A" is unambiguously a rev, on the other hand, the index entries for "B" (and everything that follows) are reset to the "A" revision. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-25Fix use of "perl -i" on WindowsLibravatar Alex Riesen2-6/+6
The perldiag(1) has following to say about this: "Can't do inplace edit without backup" (F) You're on a system such as MS-DOS that gets confused if you try reading from a deleted (but still opened) file. You have to say -i.bak, or some such. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-25Merge branch 'sb/rebase'Libravatar Junio C Hamano1-9/+34
* sb/rebase: t3404: stricter tests for git-rebase--interactive api-builtin.txt: update and fix typo
2008-06-25Merge branch 'sr/tests'Libravatar Junio C Hamano3-4/+57
* sr/tests: Hook up the result aggregation in the test makefile. A simple script to parse the results from the testcases Modify test-lib.sh to output stats to t/test-results/* Conflicts: t/test-lib.sh
2008-06-25Merge branch 'jh/clone-packed-refs'Libravatar Junio C Hamano1-3/+6
* jh/clone-packed-refs: Teach "git clone" to pack refs Prepare testsuite for a "git clone" that packs refs Move pack_refs() and friends into libgit Incorporate fetched packs in future object traversal
2008-06-25Merge branch 'lw/perlish'Libravatar Junio C Hamano3-0/+197
* lw/perlish: Git.pm: add test suite t/test-lib.sh: add test_external and test_external_without_stderr
2008-06-25clone: create intermediate directories of destination repoLibravatar Jeff King1-0/+22
The shell version used to use "mkdir -p" to create the repo path, but the C version just calls "mkdir". Let's replicate the old behavior. We have to create the git and worktree leading dirs separately; while most of the time, the worktree dir contains the git dir (as .git), the user can override this using GIT_WORK_TREE. We can reuse safe_create_leading_directories, but we need to make a copy of our const buffer to do so. Since merge-recursive uses the same pattern, we can factor this out into a global function. This has two other cleanup advantages for merge-recursive: 1. mkdir_p wasn't a very good name. "mkdir -p foo/bar" actually creates bar, but this function just creates the leading directories. 2. mkdir_p took a mode argument, but it was completely ignored. Acked-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-24verify-pack: test for detection of index v2 object CRC mismatchLibravatar Nicolas Pitre1-0/+14
Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-06-24clone: create intermediate directories of destination repoLibravatar Jeff King1-0/+22
The shell version used to use "mkdir -p" to create the repo path, but the C version just calls "mkdir". Let's replicate the old behavior. We have to create the git and worktree leading dirs separately; while most of the time, the worktree dir contains the git dir (as .git), the user can override this using GIT_WORK_TREE. We can reuse safe_create_leading_directories, but we need to make a copy of our const buffer to do so. Since merge-recursive uses the same pattern, we can factor this out into a global function. This has two other cleanup advantages for merge-recursive: 1. mkdir_p wasn't a very good name. "mkdir -p foo/bar" actually creates bar, but this function just creates the leading directories. 2. mkdir_p took a mode argument, but it was completely ignored. Acked-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>