summaryrefslogtreecommitdiff
path: root/t
AgeCommit message (Collapse)AuthorFilesLines
2012-06-12gitweb: Skip 'modification times' tests when no date parser availableLibravatar Ramsay Jones1-7/+14
The If-Modified-Since support in Gitweb is conditional on the availability of a date parser from either the HTTP::Date or Time::ParseDate modules. If a suitable parser is not available, then the corresponding 'modification times' tests should be skipped. Introduce the DATE_PARSER test prerequisite and use it to skip all of the dependent tests. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-16Merge branch 'wk/gitweb-snapshot-use-if-modified-since'Libravatar Junio C Hamano1-1/+59
Makes 'snapshot' request to "gitweb" honor If-Modified-Since: header, based on the commit date. By W. Trevor King * wk/gitweb-snapshot-use-if-modified-since: gitweb: add If-Modified-Since handling to git_snapshot(). gitweb: refactor If-Modified-Since handling gitweb: add `status` headers to git_feed() responses.
2012-04-16Merge branch 'jk/http-backend-keep-committer-ident-env'Libravatar Junio C Hamano2-0/+28
The smart-http backend used to always override GIT_COMMITTER_* variables with REMOTE_USER and REMOTE_ADDR. By Jeff King * jk/http-backend-keep-committer-ident-env: http-backend: respect existing GIT_COMMITTER_* variables
2012-04-16Merge branch 'jk/diff-no-rename-empty'Libravatar Junio C Hamano1-0/+16
Forbids rename detection logic from matching two empty files as renames during merge-recursive to prevent mismerges. By Jeff King * jk/diff-no-rename-empty: merge-recursive: don't detect renames of empty files teach diffcore-rename to optionally ignore empty content make is_empty_blob_sha1 available everywhere drop casts from users EMPTY_TREE_SHA1_BIN
2012-04-16Merge branch 'jc/maint-clean-nested-worktree-in-subdir'Libravatar Junio C Hamano1-5/+22
"git clean -d -f" (not "-d -f -f") is supposed to protect nested working trees of independent git repositories that exist in the current project working tree from getting removed, but the protection applied only to such working trees that are at the top-level of the current project by mistake. * jc/maint-clean-nested-worktree-in-subdir: clean: preserve nested git worktree in subdirectories
2012-04-15Merge branch 'da/difftool-test'Libravatar Junio C Hamano1-0/+11
Makes sure "difftool" options can be given in any order. By David Aguilar * da/difftool-test: t7800: Test difftool passing arguments to diff
2012-04-15Merge branch 'zj/test-cred-helper-nicer-prove'Libravatar Junio C Hamano1-24/+45
Minor improvement to t0303. By Zbigniew Jędrzejewski-Szmek * zj/test-cred-helper-nicer-prove: t0303: resurrect commit message as test documentation t0303: immediately bail out w/o GIT_TEST_CREDENTIAL_HELPER
2012-04-15Merge branch 'jh/notes-merge-in-git-dir-worktree'Libravatar Junio C Hamano1-4/+23
Running "notes merge --commit" failed to perform correctly when run from any directory inside $GIT_DIR/. When "notes merge" stops with conflicts, $GIT_DIR/NOTES_MERGE_WORKTREE is the place a user edits to resolve it. By Johan Herland (3) and Junio C Hamano (1) * jh/notes-merge-in-git-dir-worktree: notes-merge: Don't remove .git/NOTES_MERGE_WORKTREE; it may be the user's cwd notes-merge: use opendir/readdir instead of using read_directory() t3310: illustrate failure to "notes merge --commit" inside $GIT_DIR/ remove_dir_recursively(): Add flag for skipping removal of toplevel dir
2012-04-15Merge branch 'tr/maint-word-diff-regex-sticky'Libravatar Junio C Hamano1-0/+36
The regexp configured with wordregex was incorrectly reused across files. By Thomas Rast (2) and Johannes Sixt (1) * tr/maint-word-diff-regex-sticky: diff: tweak a _copy_ of diff_options with word-diff diff: refactor the word-diff setup from builtin_diff_cmd t4034: diff.*.wordregex should not be "sticky" in --word-diff
2012-04-15Merge branch 'jn/diffstat-tests'Libravatar Junio C Hamano16-259/+354
Some tests checked the "diff --stat" output when they do not have to, which unnecessarily made things harder to verify under GETTEXT_POISON. By Jonathan Nieder * jn/diffstat-tests: diffstat summary line varies by locale: miscellany test: use numstat instead of diffstat in binary-diff test test: use --numstat instead of --stat in "git stash show" tests test: test cherry-pick functionality and output separately test: modernize funny-names test style test: use numstat instead of diffstat in funny-names test test: use test_i18ncmp when checking --stat output
2012-04-15Merge branch 'jc/commit-hook-authorship'Libravatar Junio C Hamano1-0/+18
"git commit --author=$name" did not tell the name that was being recorded in the resulting commit to hooks, even though it does do so when the end user overrode the authorship via the "GIT_AUTHOR_NAME" environment variable. * jc/commit-hook-authorship: commit: pass author/committer info to hooks t7503: does pre-commit-hook learn authorship? ident.c: add split_ident_line() to parse formatted ident line
2012-04-15Merge branch 'nd/stream-more'Libravatar Junio C Hamano1-2/+36
Use API to read blob data in smaller chunks in more places to reduce the memory footprint. By Nguyễn Thái Ngọc Duy (6) and Junio C Hamano (1) * nd/stream-more: update-server-info: respect core.bigfilethreshold fsck: use streaming API for writing lost-found blobs show: use streaming API for showing blobs parse_object: avoid putting whole blob in core cat-file: use streaming API to print blobs Add more large blob test cases streaming: make streaming-write-entry to be more reusable
2012-04-15merge overwrites unstaged changes in renamed fileLibravatar Clemens Buchacher1-0/+9
Signed-off-by: Clemens Buchacher <drizzd@aon.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-30http-backend: respect existing GIT_COMMITTER_* variablesLibravatar Jeff King2-0/+28
The http-backend program sets default GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL variables based on the REMOTE_USER and REMOTE_ADDR variables provided by the webserver. However, it unconditionally overwrites any existing GIT_COMMITTER variables, which may have been customized by site-specific code in the webserver (or in a script wrapping http-backend). Let's leave those variables intact if they already exist, assuming that any such configuration was intentional. There is a slight chance of a regression if somebody has set GIT_COMMITTER_* for the entire webserver, not intending it to leak through http-backend. We could protect against this by passing the information in alternate variables. However, it seems unlikely that anyone will care about that regression, and there is value in the simplicity of using the common variable names that are used elsewhere in git. While we're tweaking the environment-handling in http-backend, let's switch it to use argv_array to handle the list of variables. That makes the memory management much simpler. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-30gitweb: add If-Modified-Since handling to git_snapshot().Libravatar W. Trevor King1-0/+33
Because snapshots can be large, you can save some bandwidth by supporting caching via If-Modified-Since. This patch adds support for the i-m-s request to git_snapshot() if the request is a commit. Requests for snapshots of trees, which lack well defined timestamps, are still handled as they were before. Signed-off-by: W Trevor King <wking@drexel.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-30gitweb: refactor If-Modified-Since handlingLibravatar W. Trevor King1-1/+26
The current gitweb only generates Last-Modified and handles If-Modified-Since headers for the git_feed action. This patch breaks the Last-Modified and If-Modified-Since handling code out from git_feed into a new function exit_if_unmodified_since. This makes the code easy to reuse for other actions. Only gitweb actions which can easily calculate a modification time should use exit_if_unmodified_since, as the goal is to balance local processing time vs. upload bandwidth. Signed-off-by: W Trevor King <wking@drexel.edu> Acked-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-27tests: unset COLUMNS inherited from environmentLibravatar Zbigniew Jędrzejewski-Szmek1-1/+1
$COLUMNS must be unset to not interfere with the tests. The tests already ignore the terminal size because output is redirected to a file, but COLUMNS overrides terminal size detection and changes the test output away from the standard 80. Reported-by: Jeff King <peff@peff.net> Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-26Merge branch 'jn/maint-fast-import-empty-ls' into maintLibravatar Junio C Hamano1-0/+39
* jn/maint-fast-import-empty-ls: fast-import: don't allow 'ls' of path with empty components fast-import: leakfix for 'ls' of dirty trees
2012-03-26Merge branch 'ms/maint-config-error-at-eol-linecount' into maintLibravatar Junio C Hamano1-0/+31
* ms/maint-config-error-at-eol-linecount: config: report errors at the EOL with correct line number
2012-03-23merge-recursive: don't detect renames of empty filesLibravatar Jeff King1-0/+16
Merge-recursive detects renames so that if one side modifies "foo" and the other side moves it to "bar", the modification is applied to "bar". However, our rename detection is based on content analysis, it can be wrong (i.e., two files were not intended as a rename, but just happen to have the same or similar content). This is quite rare if the files actually contain content, since two unrelated files are unlikely to have exactly the same content. However, empty files present a problem, in that there is nothing to analyze. An uninteresting placeholder file with zero bytes may or may not be related to a placeholder file with another name. The result is that adding content to an empty file may cause confusion if the other side of a merge removed it; your content may end up in another random placeholder file that was added. Let's err on the side of caution and not consider empty files as renames. This will cause a modify/delete conflict on the merge, which will let the user sort it out themselves. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-20Merge branch 'maint-1.7.8' into maintLibravatar Junio C Hamano2-3/+11
* maint-1.7.8: t/Makefile: Use $(sort ...) explicitly where needed gitweb: Fix actionless dispatch for non-existent objects i18n of multi-line advice messages
2012-03-20Merge branch 'ks/sort-wildcard-in-makefile' into maint-1.7.8Libravatar Junio C Hamano1-3/+3
* ks/sort-wildcard-in-makefile: t/Makefile: Use $(sort ...) explicitly where needed
2012-03-20Merge branch 'jn/gitweb-unspecified-action' into maint-1.7.8Libravatar Junio C Hamano1-0/+8
* jn/gitweb-unspecified-action: gitweb: Fix actionless dispatch for non-existent objects
2012-03-19t7800: Test difftool passing arguments to diffLibravatar David Aguilar1-0/+11
git-difftool relies on the ability to forward unknown arguments to the git-diff command. Add a test to ensure that this works as advertised. Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-16Merge "two fixes for fast-import's 'ls' command" from JonathanLibravatar Junio C Hamano1-0/+39
Andrew Sayers noticed that the svn-fe | git fast-import pipeline mishandles a subversion history that copies the root directory to a sub-directory (e.g. doing `svn cp . trunk` to standardise your layout). As David Barr explained, the bug arises when the following command is sent to git fast-import: 'ls' SP ':1' SP LF Instead of reading back what is at the root of r1, it unconditionally reports the path as missing. After sleeping on it, here are two patches for 'maint'. One plugs a memory leak. The other ensures that trying to pass an empty path to the 'ls' command results in an error message that can help the frontend author instead of the silently broken conversion Andrew found. Then we can carefully add 'ls ""' support in 1.7.11. * commit 'refs/pull-request-tags/jn/maint-fast-import-empty-ls': fast-import: don't allow 'ls' of path with empty components fast-import: leakfix for 'ls' of dirty trees
2012-03-15clean: preserve nested git worktree in subdirectoriesLibravatar Junio C Hamano1-5/+22
remove_dir_recursively() has a check to avoid removing the directory it was asked to remove without recursing into it and report success when the directory is the top level of a working tree of a nested git repository, to protect such a repository from "clean -f" (without double -f). If a working tree of a nested git repository is in a subdirectory of a toplevel project, however, this protection did not apply by mistake; we forgot to pass the REMOVE_DIR_KEEP_NESTED_GIT down to the recursive removal codepath. This requires us to also teach the higher level not to remove the directory it is asked to remove, when the recursed invocation did not remove the directory it was asked to remove due to a nested git repository, as it is not an error to leave the parent directories of such a nested repository. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-15notes-merge: Don't remove .git/NOTES_MERGE_WORKTREE; it may be the user's cwdLibravatar Johan Herland1-4/+4
When a manual notes merge is committed or aborted, we need to remove the temporary worktree at .git/NOTES_MERGE_WORKTREE. However, removing the entire directory is not good if the user ran the 'git notes merge --commit/--abort' from within that directory. On Windows, the directory removal would simply fail, while on POSIX systems, users would suddenly find themselves in an invalid current directory. Therefore, instead of deleting the entire directory, we delete everything _within_ the directory, and leave the (empty) directory in place. This would cause a subsequent notes merge to abort, complaining about a previous - unfinished - notes merge (due to the presence of .git/NOTES_MERGE_WORKTREE), so we also need to adjust this check to only trigger when .git/NOTES_MERGE_WORKTREE is non-empty. Finally, adjust the t3310 manual notes merge testcases to correctly handle the existence of an empty .git/NOTES_MERGE_WORKTREE directory. Inspired-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-15notes-merge: use opendir/readdir instead of using read_directory()Libravatar Johan Herland1-1/+1
notes_merge_commit() only needs to list all entries (non-recursively) under a directory, which can be easily accomplished with opendir/readdir and would be more lightweight than read_directory(). read_directory() is designed to list paths inside a working directory. Using it outside of its scope may lead to undesired effects. Apparently, one of the undesired effects of read_directory() is that it doesn't deal with being given absolute paths. This creates problems for notes_merge_commit() when git_path() returns an absolute path, which happens when the current working directory is in a subdirectory of the .git directory. Originally-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Updated-by: Johan Herland <johan@herland.net> Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-15t3310: illustrate failure to "notes merge --commit" inside $GIT_DIR/Libravatar Johan Herland1-0/+19
The 'git notes merge' command expected to be run from the working tree of the project being annotated, and did not anticipate getting run inside $GIT_DIR/. However, because we use $GIT_DIR/NOTES_MERGE_WORKTREE as a temporary working space for the user to work on resolving conflicts, it is not unreasonable for a user to run "git notes merge --commit" there. But the command fails to do so. Found-by: David Bremner <david@tethera.net> Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-15t0303: resurrect commit message as test documentationLibravatar Zbigniew Jędrzejewski-Szmek1-1/+29
The commit message which added those tests (861444f 't: add test harness for external credential helpers' 2011-12-10) provided nice documentation in the commit message. Let's make it more visible by putting it in the test description. The documentation is updated to reflect the fact that GIT_TEST_CREDENTIAL_HELPER must be set for GIT_TEST_CREDENTIAL_HELPER_TIMEOUT to be used and GIT_TEST_CREDENTIAL_HELPER_SETUP can be used. Based-on-commit-message-by: Jeff King <peff@peff.net> Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-15t0303: immediately bail out w/o GIT_TEST_CREDENTIAL_HELPERLibravatar Zbigniew Jędrzejewski-Szmek1-23/+16
t0300-credential-helpers.sh requires GIT_TEST_CREDENTIAL_HELPER to be configured to do something sensible. If it is not set, prove will say: ./t0303-credential-external.sh .. skipped: (no reason given) which isn't very nice. Use skip_all="..." && test_done to bail out immediately and provide a nicer message. In case GIT_TEST_CREDENTIAL_HELPER is set, but the timeout tests are skipped, mention GIT_TEST_CREDENTIAL_HELPER_TIMEOUT. Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-14diff: tweak a _copy_ of diff_options with word-diffLibravatar Thomas Rast1-1/+1
When using word diff, the code sets the word_regex from various defaults if it was not set already. The problem is that it does this on the original diff_options, which will also be used in subsequent diffs. This means that when the word_regex is not given on the command line, only the first diff for which a setting for word_regex (either from attributes or diff.wordRegex) ever takes effect. This value then propagates to the rest of the diff runs and in particular prevents further attribute lookups. Fix the problem of changing diff state once and for all, by working with a _copy_ of the diff_options. Noticed-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-14t4034: diff.*.wordregex should not be "sticky" in --word-diffLibravatar Johannes Sixt1-0/+36
The test case applies a custom wordRegex to one file in a diff, and expects that the default word splitting applies to the second file in the diff. But the custom wordRegex is also incorrectly used for the second file. Helped-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-13diffstat summary line varies by locale: miscellanyLibravatar Jonathan Nieder8-64/+96
These changes are in the same spirit as the six patches that precede them, but they haven't been split into individually justifiable patches yet. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-13test: use numstat instead of diffstat in binary-diff testLibravatar Jonathan Nieder1-6/+23
git's --stat output is intended for humans and since v1.7.9.2~13 (2012-02-01) varies by locale. The tests in this script using "apply --stat" are meant to check two things: - how binary file changes are accounted for and printed in git's diffstat format - that "git apply" can parse the various forms of binary diff Split these two kinds of check into separate tests, and use --numstat instead of --stat in the latter. This way, we lose less test coverage when git is being run without writing its output in the C locale (for example because GETTEXT_POISON is enabled) and there are fewer tests to change if the --stat output needs to be tweaked again. While at it, use commands separated by && that read and write to temporary files in place of pipelines so segfaults and other failures in the upstream of the processing pipeline don't get hidden. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-13test: use --numstat instead of --stat in "git stash show" testsLibravatar Jonathan Nieder1-7/+19
git's diff --stat output is intended for human consumption and since v1.7.9.2~13 (2012-02-01) varies by locale. Add a test checking that git stash show defaults to --stat and tweak the rest of the "stash show" tests that showed a diffstat to use numstat. This way, there are fewer tests to tweak if the diffstat format changes again. This also improves test coverage when running tests with git configured not to write its output in the C locale (e.g., via GETTEXT_POISON=Yes). Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-13test: test cherry-pick functionality and output separatelyLibravatar Jonathan Nieder1-8/+22
Since v1.7.3-rc0~26^2~9 (revert: report success when using option --strategy, 2010-07-14), the cherry-pick-many-commits test checks the format of output written to the terminal during a cherry-pick sequence in addition to the functionality. There is no reason those have to be checked in the same test, though, and it has some downsides: - when progress output is broken, the test result does not convey whether the functionality was also broken or not - it is not immediately obvious when reading that these checks are meant to prevent regressions in details of the output format and are not just a roundabout way to check functional details like the number of commits produced - there is a temptation to include the same kind of output checking for every new cherry-pick test, which would make future changes to the output unnecessarily difficult Put the tests from v1.7.3-rc0~26^2~9 in separate assertions, following the principle "test one feature at a time". Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-13test: modernize funny-names test styleLibravatar Jonathan Nieder1-167/+180
This is one of the early tests, so it uses a style that by modern standards can be hard to read. Tweak it to: - clearly declare what assertion each test is designed to check - mark tests that create state later tests will depend on with the word "setup" so people writing or running tests know the others can be skipped or reordered safely - put commands that populate a file with expected output inside the corresponding test stanza, so it is easier to see by eye where each test begins and ends - instead of pipelines, use commands that read and write a temporary file, so bugs causing commands to segfault or produce the wrong exit status can be caught. More cosmetic changes: - put the opening quote starting each test on the same line as the test_expect_* invocation, and indent the commands in each test with a single tab - end the test early if the underlying filesystem cannot accomodate the filenames we use, instead of marking all tests with the same TABS_IN_FILENAMES prerequisite. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-13test: use numstat instead of diffstat in funny-names testLibravatar Jonathan Nieder1-10/+17
This test script checks that git's plumbing commands quote filenames with special characters like space, tab, and double-quote appropriately in their input and output. Since commit v1.7.9.2~13 (Use correct grammar in diffstat summary line, 2012-02-01), the final "1 file changed, 1 insertion(+)" line from diffstats is translatable, meaning tests that rely on exact "git apply --stat" output have to be skipped when git is not configured to produce output in the C locale (for example, when GETTEXT_POISON is enabled). So: - Tweak the three "git apply --stat" tests that check "git apply"'s input parsing to use --numstat instead. --numstat output is more reliable, does not vary with locale, and is itself easier to parse. These tests are mainly about how "git apply" parses its input so this should not result in much loss of coverage. - Add a new "apply --stat" test to check the quoting in --stat output format. This wins back a little of the test coverage lost with the patch "test: use test_i18ncmp to check --stat output" when GETTEXT_POISON is enabled. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-13test: use test_i18ncmp when checking --stat outputLibravatar Jonathan Nieder8-16/+16
Ever since v1.7.9.2~13 (2012-02-01), git's diffstat-style summary line produced by "git apply --stat", "git diff --stat", and "git commit" varies by locale, producing test failures when GETTEXT_POISON is set. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-13Merge branch 'jc/maint-undefined-i18n-observation-test'Libravatar Junio C Hamano1-14/+23
It was unclear what a test in t0204 wanted to check; it turns out that it was only to observe an undefined behaviour of the system, and did not anticipate one kind of reasonable error behaviour. * jc/maint-undefined-i18n-observation-test: t0204: clarify the "observe undefined behaviour" test
2012-03-13Merge branch 'ms/maint-config-error-at-eol-linecount'Libravatar Junio C Hamano1-0/+31
When "git config" diagnoses an error in a configuration file and shows the line number for the offending line, it miscounted if the error was at the end of line. By Martin Stenberg * ms/maint-config-error-at-eol-linecount: config: report errors at the EOL with correct line number Conflicts: t/t1300-repo-config.sh
2012-03-12Merge branch 'tr/maint-bundle-boundary' into maintLibravatar Junio C Hamano1-22/+35
"git bundle" did not record boundary commits correctly when there are many of them. By Thomas Rast * tr/maint-bundle-boundary: bundle: keep around names passed to add_pending_object() t5510: ensure we stay in the toplevel test dir t5510: refactor bundle->pack conversion
2012-03-12Merge branch 'jc/maint-diff-patch-header' into maintLibravatar Junio C Hamano1-85/+110
"git diff-index" and its friends at the plumbing level showed the "diff --git" header and nothing else for a path whose cached stat info is dirty without actual difference when asked to produce a patch. This was a longstanding bug that we could have fixed long time ago. By Junio C Hamano * jc/maint-diff-patch-header: diff -p: squelch "diff --git" header for stat-dirty paths t4011: illustrate "diff-index -p" on stat-dirty paths t4011: modernise style
2012-03-12Merge branch 'jc/am-3-nonstandard-popt' into maintLibravatar Junio C Hamano1-0/+15
The code to synthesize the fake ancestor tree used by 3-way merge fallback in "git am" was not prepared to read a patch created with a non-standard -p<num> value. * jc/am-3-nonstandard-popt: test: "am -3" can accept non-standard -p<num> am -3: allow nonstandard -p<num> option
2012-03-12config: report errors at the EOL with correct line numberLibravatar Martin Stenberg1-0/+31
A section in a config file with a missing "]" reports the next line as bad, same goes to a value with a missing end quote. This happens because the error is not detected until the end of the line, when line number is already increased. Fix this by decreasing line number by one for these cases. Signed-off-by: Martin Stenberg <martin@gnutiken.se> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-11commit: pass author/committer info to hooksLibravatar Junio C Hamano1-1/+1
When lying the author name via GIT_AUTHOR_NAME environment variable to "git commit", the hooks run by the command saw it and could act on the name that will be recorded in the final commit. When the user uses the "--author" option from the command line, the command should give the same information to the hook, and back when "git command" was a scripted Porcelain, it did set the environment variable and hooks can learn the author name from it. However, when the command was reimplemented in C, the rewritten code was not very faithful to the original, and hooks stopped getting the authorship information given with "--author". Fix this by exporting the necessary environment variables. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-11t7503: does pre-commit-hook learn authorship?Libravatar Junio C Hamano1-0/+18
When "--author" option is used to lie the authorship to "git commit" command, hooks should learn the author name and email just like when GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL environment variables are used to lie the authorship. Test this. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-09fast-import: don't allow 'ls' of path with empty componentsLibravatar Jonathan Nieder1-0/+39
As the fast-import manual explains: The value of <path> must be in canonical form. That is it must not: . contain an empty directory component (e.g. foo//bar is invalid), . end with a directory separator (e.g. foo/ is invalid), . start with a directory separator (e.g. /foo is invalid), Unfortunately the "ls" command accepts these invalid syntaxes and responds by declaring that the indicated path is missing. This is too subtle and causes importers to silently misbehave; better to error out so the operator knows what's happening. The C, R, and M commands already error out for such paths. Reported-by: Andrew Sayers <andrew-git@pileofstuff.org> Analysis-by: David Barr <davidbarr@google.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
2012-03-09t0204: clarify the "observe undefined behaviour" testLibravatar Junio C Hamano1-14/+23
This test asks for an impossible conversion to the system by preparing an UTF-8 translation with characters that cannot be expressed in ISO-8859-1, and then asking the message shown in ISO-8859-1. Even though the behaviour against such a request is undefined, it may be interesting to see what the system does, and the purpose of this test is to see if there are platforms that exhibit behaviour that we haven't seen. The original recognized two known modes of behaviour: - the key used to query the message catalog ("TEST: Old English Runes"), saying "I cannot do that i18n". - impossible characters replaced with ASCII "?", saying "I punt". but they were treated totally differently. The test simply issued an informational message "Your system punts on this one" for the first error mode, while it diagnosed the latter as "Your system is good; you pass!". It turns out that Mac OS X exhibits a third mode of error behaviour, to spew out the raw value stored in the message catalog. The test diagnosed this behaviour as "broken", but it is merely trying to do its best to respond to an impossible request by saying "I punt" in a way that is slightly different from the second one. Update the offending test to make it clear what is (and is not) being tested, update the code structure so that newly discovered error mode can easily be added to it later, and reword the message that comes from a failing case to clarify that it is not the system that is broken when it fails, but merely that the behaviour is not something we have seen. Signed-off-by: Junio C Hamano <gitster@pobox.com>