summaryrefslogtreecommitdiff
path: root/t
AgeCommit message (Collapse)AuthorFilesLines
2012-06-28Merge branch 'fc/git-prompt-script'Libravatar Junio C Hamano3-13/+475
Split a rather heavy-ish "git completion" script out to create a separate "git prompting" script, to help lazy-autoloading of the completion part while making prompting part always available.
2012-06-28Merge branch 'js/submodule-relative'Libravatar Junio C Hamano2-4/+235
Teach "git submodule" deal with nested submodule structure where a module is contained within a module whose origin is specified as a relative URL to its superproject's origin.
2012-06-28Merge branch 'lk/more-helpful-status-hints'Libravatar Junio C Hamano2-0/+745
Give finer classification to various states of paths in conflicted state and offer advice messages in the "git status" output.
2012-06-28Merge branch 'lk/rebase-i-x'Libravatar Junio C Hamano1-0/+117
Teach "-x <cmd>" to "rebase -i" to insert "exec <cmd>" after each commit in the resulting history.
2012-06-28Merge branch 'nd/stream-pack-objects'Libravatar Junio C Hamano1-0/+12
"pack-objects" learned to read large loose blobs using the streaming API, without the need to hold everything in core at once.
2012-06-28Merge branch 'nd/stream-index-pack'Libravatar Junio C Hamano2-0/+10
Use streaming API to read from the object store to avoid having to hold a large blob object in-core while running index-pack.
2012-06-28Merge branch 'mm/verify-filename-fix'Libravatar Junio C Hamano1-0/+11
"git diff COPYING HEAD:COPYING" gave a nonsense error message that claimed that the treeish HEAD did not have COPYING in it.
2012-06-22Merge branch 'maint'Libravatar Junio C Hamano2-3/+3
* maint: Documentation: Fix misspellings
2012-06-22Documentation: Fix misspellingsLibravatar Leila Muhtasib2-3/+3
Signed-off-by: Leila Muhtasib <muhtasib@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-21Merge branch 'jk/maint-t1304-setfacl'Libravatar Junio C Hamano1-10/+9
Works around a false test failure caused by a bug in ecryptofs. * jk/maint-t1304-setfacl: t1304: improve setfacl prerequisite setup
2012-06-21Merge branch 'jk/clone-local'Libravatar Junio C Hamano1-0/+10
"git clone --local $path" started its life as an experiment to optionally use link/copy when cloning a repository on the disk, but we didn't deprecate it after we made the option a no-op to always use the optimization. The command learns "--no-local" option to turn this off, as a more explicit alternative over use of file:// URL. * jk/clone-local: clone: allow --no-local to turn off local optimizations docs/clone: mention that --local may be ignored
2012-06-19completion: respect $GIT_DIRLibravatar SZEDER Gábor1-1/+9
The __gitdir() helper function finds out the path of the git repository by running 'git rev-parse --git-dir'. However, it has a shortcut first to avoid the overhead of running a git command in a subshell when the current directory is at the top of the work tree, i.e. when it contains a '.git' subdirectory. If the 'GIT_DIR' environment variable is set then it specifies the path to the git repository, and the autodetection of the '.git' directory is not necessary. However, $GIT_DIR is only taken into acocunt by 'git rev-parse --git-dir', and the check for the '.git' subdirectory is performed first, so it wins over the path given in $GIT_DIR. There are several completion (helper) functions that depend on __gitdir(), and when the above case triggers the completion script will do weird things, like offering refs, aliases, or stashes from a different repository, or displaying wrong or broken prompt, etc. So check first whether $GIT_DIR is set, and only proceed with checking the '.git' directory in the current directory if it isn't. 'git rev-parse' would also check whether the path in $GIT_DIR is a proper '.git' directory, i.e. 'HEAD', 'refs/', and 'objects/' are present and accessible, but we don't have to be that thorough for the bash prompt. And we've lived with an equally permissive check for '.git' in the current working directory for years anyway. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-18verify_filename(): ask the caller to chose the kind of diagnosisLibravatar Matthieu Moy1-1/+1
verify_filename() can be called in two different contexts. Either we just tried to interpret a string as an object name, and it fails, so we try looking for a working tree file (i.e. we finished looking at revs that come earlier on the command line, and the next argument must be a pathname), or we _know_ that we are looking for a pathname, and shouldn't even try interpreting the string as an object name. For example, with this change, we get: $ git log COPYING HEAD:inexistant fatal: HEAD:inexistant: no such path in the working tree. Use '-- <path>...' to specify paths that do not exist locally. $ git log HEAD:inexistant fatal: Path 'inexistant' does not exist in 'HEAD' Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-18sha1_name: do not trigger detailed diagnosis for file argumentsLibravatar Matthieu Moy1-0/+11
diagnose_invalid_sha1_path() is meant to be called to diagnose a misspelt <treeish>:<pathname> when <pathname> does not exist in <treeish>. However, the code may call it if <treeish>:<pathname> is invalid (which triggers another call with only_to_die == 1), but for another reason. This happens when calling e.g. git log existing-file HEAD:existing-file because existing-file is a path and not a revision, the code verifies that the arguments that follow to be paths. This leads to an incorrect message like "existing-file does not exist in HEAD", even though the path exists in HEAD. Check that the search for <pathname> in <treeish> fails before triggering the diagnosis. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-15Merge branch 'as/diff-shortstat-ignore-binary'Libravatar Junio C Hamano1-0/+12
# By Alexander Strasser * as/diff-shortstat-ignore-binary: diff: Only count lines in show_shortstats
2012-06-15diff: Only count lines in show_shortstatsLibravatar Alexander Strasser1-0/+12
Do not mix byte and line counts. Binary files have byte counts; skip them when accumulating line insertions/deletions. The regression was introduced in e18872b. Signed-off-by: Alexander Strasser <eclipse7@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-14t7400: avoid path mangling issuesLibravatar Johannes Sixt1-3/+8
A recently introduced test uses an absolute path. But when run on Windows using the MSYS bash, such a path is mangled into a Windows style path when it is passed to 'git config'. The subsequent 'test' then compares the mangled path to the unmangled version and reports a failure. A path beginning with two slashes denotes a network directory (//server/share path) and is not mangled. Use that trick to side-step the issue. Just in case that 'git submodule init' regresses in such a way that it accesses the URL, use a path name that is unlikely to exist on POSIX systems, and that cannot be a server name on Windows. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-14status: better advices when splitting a commit (during rebase -i)Libravatar Lucien Kong1-0/+277
Add new informative help messages at the output of 'git status' when the user is splitting a commit. The code figures this state by comparing the contents of the following files in the .git/ directory: - HEAD - ORIG_HEAD - rebase-merge/amend - rebase-merge/orig-head Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr> Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr> Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr> Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr> Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-14status: don't suggest "git rm" or "git add" if not appropriateLibravatar Lucien Kong2-6/+38
The display of the advice '(use git add/rm [...])' (when there are unmerged files) after running 'git status' is now depending of the mark, whether it's 'both deleted', 'deleted by us/them' or others. For instance, when there is just one file that's marked as 'both deleted', 'git status' shows '(use git rm [...])' and if there are two files, one as 'both deleted' and the other as 'added by them', the advice is '(use git add/rm [...])'. The previous tests in t7512-status-help.sh are updated. Test about the case of only 'both deleted' is added in t7060-wtstatus.sh Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr> Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr> Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr> Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr> Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-14t7512-status-help.sh: better advices for git statusLibravatar Lucien Kong1-0/+372
The following tests include several cases in which the user needs to run 'git status' to know his current situation, whether there're conflicts or he's in rebase/bisect/am/cherry-pick progress. One of the test is about the set of the advice.statushints config key to 'false' in .git/config. Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr> Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr> Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr> Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr> Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-14wt-status.*: better advices for git status addedLibravatar Lucien Kong1-0/+64
This patch provides new informative help messages in the display of 'git status' (at the top) during conflicts, rebase, am, bisect or cherry-pick process. The new messages are not shown when using options such as -s or --porcelain. The messages about the current situation of the user are always displayed but the advices on what the user needs to do in order to resume a rebase/bisect/am/commit after resolving conflicts can be hidden by setting advice.statushints to 'false' in the config file. Thus, information about the updated advice.statushints key are added in Documentation/config.txt. Also, the test t7060-wt-status.sh is now working with the new help messages. Tests about suggestions of "git rm" are also added. Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr> Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr> Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr> Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr> Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-13rebase -i: teach "--exec <cmd>"Libravatar Lucien Kong1-0/+117
During an interactive rebase session, it is sometimes desirable to run tests on each commit in the resulting history. This can be done by adding "exec <test command>" when editing the insn sheet, but the command used for testing is often the same for all resulting commits. By passing "--exec <cmd>" from the command line, automatically add these "exec" lines after each commit in the final history. To work well with the --autosquash option, these are added at the end of each run of "fixup" and "squash". Helped-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr> Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr> Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr> Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr> Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-13Merge branch 'rj/gitweb-test-sans-date-parser'Libravatar Junio C Hamano1-7/+14
Regression fix to t9501 introduced at 0f3ddd4 * rj/gitweb-test-sans-date-parser: gitweb: Skip 'modification times' tests when no date parser available
2012-06-13Merge branch 'fc/git-complete-helper-fix'Libravatar Junio C Hamano1-1/+1
* fc/git-complete-helper-fix: completion: put main git and gitk completion functions back into git namespace
2012-06-13completion: put main git and gitk completion functions back into git namespaceLibravatar SZEDER Gábor1-1/+1
Commit 7f02f3d7 (completion: rename internal helpers _git and _gitk, 2012-05-19) renamed said functions to _main_git() and _main_gitk(), respectively. By convention the name of our git-completion-specific functions start with '_git' or '__git' prefix, so rename those functions once again to put them back into our "namespace". Use the two underscore prefix, because _git_main() could be mistaken for the completion function of the (not yet existing) 'git main' command. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
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-06-12Merge branch 'jc/fmt-merge-msg-people'Libravatar Junio C Hamano1-18/+18
Tone down the lines that credit people involved and make them comments, so that integrators who edit their merge messages can still make use of the information, but lazy ones will not leave the unverified guesses placed on the "via" line. * jc/fmt-merge-msg-people: fmt-merge-msg: make attribution into comment lines
2012-06-07t1304: improve setfacl prerequisite setupLibravatar Jeff King1-10/+9
t1304 first runs setfacl as an experiment to see whether the filesystem supports ACLs, and skips the remaining tests if it does not. However, our setfacl run did not exercise the ACLs very well, and some filesystems may support our initial setfacl, but not the rest of the test. In particular, some versions of ecryptfs will erroneously apply the umask on top of an inherited directory ACL, causing our tests to fail. Let's be more careful and make sure both that we can read back the user ACL we set, and that the inherited ACL is propagated correctly. The latter catches the ecryptfs bug, but may also catch other bugs (e.g., an implementation which does not handle inherited ACLs at all). Since we're making the setup more complex, let's move it into its own test. This will hide the output for us unless the user wants to run "-v" to see it (and we don't need to bother printing anything about setfacl failing; the remaining tests will properly print "skip" due to the missing prerequisite). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-07Merge branch 'rr/maint-t3510-cascade-fix'Libravatar Junio C Hamano1-1/+1
* rr/maint-t3510-cascade-fix: t3510 (cherry-pick-sequence): add missing '&&'
2012-06-06fmt-merge-msg: make attribution into comment linesLibravatar Junio C Hamano1-18/+18
The submaintainer credit is not something you can compute purely by looking at the history and its shape, especially in the presense of fast-forward merges, and this observation makes the information on the "via" line unreliable. Let's leave the final determination of credits up to whoever is making the merge and show them as comments. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-06submodule: fix handling of superproject origin URLs like foo, ./foo and ↵Libravatar Jon Seymour2-6/+6
./foo/bar Currently git submodule init and git submodule sync fail with an error if the superproject origin URL is of the form foo but succeed if the superproject origin URL is of the form ./foo or ./foo/bar or foo/bar. This change makes handling of the foo case behave like the handling of the ./foo case and also ensures that superfluous leading and embedded ./'s are removed from the resulting derived URLs. Signed-off-by: Jon Seymour <jon.seymour@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-06submodule: fix sync handling of some relative superproject origin URLsLibravatar Jon Seymour1-4/+4
When the origin URL of the superproject is itself relative, git submodule sync configures the remote.origin.url configuration property of the submodule with a path that is relative to the work tree of the superproject rather than the work tree of the submodule. To fix this an 'up_path' that navigates from the work tree of the submodule to the work tree of the superproject needs to be prepended to the URL otherwise calculated. Correct handling of superproject origin URLs like foo, ./foo and ./foo/bar is left to a subsequent patch since an additional change is required to handle these cases. The documentation of resolve_relative_url() is expanded to give a more thorough description of the function's objective. Signed-off-by: Jon Seymour <jon.seymour@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-04t3510 (cherry-pick-sequence): add missing '&&'Libravatar Ramkumar Ramachandra1-1/+1
Breaks in a test assertion's && chain can potentially hide failures from earlier commands in the chain. Fix an instance of this in the setup. Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-03submodule: document failure to handle relative superproject origin URLsLibravatar Jon Seymour2-1/+123
This test case documents several cases where handling of relative superproject origin URLs doesn't produce an expected result. submodule.{sub}.url in the superproject is incorrect in these cases: foo ./foo ./foo/bar The remote.origin.url of the submodule is incorrect in the above cases and also when the superproject origin URL is like: foo/bar ../foo ../foo/bar Signed-off-by: Jon Seymour <jon.seymour@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-03submodule: additional regression tests for relative URLsLibravatar Jon Seymour1-3/+107
Some additional tests are added to support regression testing of the changes in the remainder of the series. We also add a pristine copy of .gitmodules in anticipation of this being required by later tests. Signed-off-by: Jon Seymour <jon.seymour@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-01Merge branch 'ef/maint-rebase-error-message'Libravatar Junio C Hamano1-0/+5
By Erik Faye-Lund * ef/maint-rebase-error-message: rebase: report invalid commit correctly
2012-06-01Merge branch 'nh/empty-rebase'Libravatar Junio C Hamano1-0/+30
* nh/empty-rebase: cherry-pick: regression fix for empty commits
2012-05-30rebase: report invalid commit correctlyLibravatar Erik Faye-Lund1-0/+5
In 9765b6a (rebase: align variable content, 2011-02-06), the code to error out was moved up one level. Unfortunately, one reference to a function parameter wasn't rewritten as it should, leading to the wrong parameter being errored on. This error was propagated by 71786f5 (rebase: factor out reference parsing, 2011-02-06) and merged in 78c6e0f (Merge branch 'mz/rebase', 2011-04-28). Correct this by reporting $onto_name istead. Reported-By: Manuela Hutter <manuelah@opera.com> Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-30clone: allow --no-local to turn off local optimizationsLibravatar Jeff King1-0/+10
This is basically the same as using "file://", but is a little less subtle for the end user. It also allows relative paths to be specified. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-29cherry-pick: regression fix for empty commitsLibravatar Junio C Hamano1-0/+30
The earlier "--keep-redundant-commit" series broke "cherry-pick" that is given a commit whose change is already in the current history. Such a cherry-pick would result in an empty change, and should stop with an error, telling the user that conflict resolution may have made the result empty (which is exactly what is happening), but we silently dropped the change on the floor without any message nor non-zero exit code. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-29t5701: modernize styleLibravatar Jeff King1-53/+20
This test is pretty old and did not follow some of our more modern best practices. In particular: 1. It chdir'd all over the place, leaving later tests to deal with the fallout. Do our chdirs in subshells instead. 2. It did not use test_must_fail. 3. It did not use test_line_count. 4. It checked for the non-existence of a ref by looking in the .git/refs directory (since we pack refs during clone these days, this will always be succeed, making the test useless). Note that one call to "-e .git/refs/..." remains, because it is checking for the existence of a symbolic ref, not a ref itself. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-29Merge branch 'va/git-p4-test'Libravatar Junio C Hamano1-3/+107
By Vitor Antunes * va/git-p4-test: git-p4: Clean up branch test cases git-p4: Verify detection of "empty" branch creation git-p4: Test changelists touching two branches
2012-05-29pack-objects: use streaming interface for reading large loose blobsLibravatar Nguyễn Thái Ngọc Duy1-0/+12
git usually streams large blobs directly to packs. But there are cases where git can create large loose blobs (unpack-objects or hash-object over pipe). Or they can come from other git implementations. core.bigfilethreshold can also be lowered down and introduce a new wave of large loose blobs. Use streaming interface to read/compress/write these blobs in one go. Fall back to normal way if somehow streaming interface cannot be used. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-29git-p4: Clean up branch test casesLibravatar Vitor Antunes1-3/+1
Correct submit description in one test and remove not required commands from another. Signed-off-by: Vitor Antunes <vitor.hda@gmail.com> Acked-by: Pete Wyckoff <pw@padd.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-29git-p4: Verify detection of "empty" branch creationLibravatar Vitor Antunes1-0/+54
Current implementation of new branch parent detection works on the principle that the new branch is a complete integration, with no changes, of the original files. This test shows this deficiency in the particular case when the new branch is created from a subset of the original files. Signed-off-by: Vitor Antunes <vitor.hda@gmail.com> Acked-by: Pete Wyckoff <pw@padd.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-29git-p4: Test changelists touching two branchesLibravatar Vitor Antunes1-0/+52
It is possible to modify two different branches in P4 in a single changelist. git-p4 correctly detects this and commits the relevant changes to the different branches separately. This test proves that and avoid future regressions in this behavior. Signed-off-by: Vitor Antunes <vitor.hda@gmail.com> Acked-by: Pete Wyckoff <pw@padd.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-25Merge branch 'mh/test-keep-prove-cache'Libravatar Junio C Hamano1-2/+4
By Michael Haggerty * mh/test-keep-prove-cache: t/Makefile: retain cache t/.prove across prove runs
2012-05-25Merge branch 'fc/git-complete-helper-fix'Libravatar Junio C Hamano1-1/+1
Resurrects old behaviour of _git/_gitk for external users.
2012-05-25Merge branch 'jk/ident-split-fix'Libravatar Junio C Hamano1-0/+7
An author/committer name that is a single character was mishandled as an invalid name by mistake.
2012-05-25Merge branch 'rs/maint-grep-F'Libravatar Junio C Hamano1-0/+5
"git grep -e '$pattern'", unlike the case where the patterns are read from a file, did not treat individual lines in the given pattern argument as separate regular expressions as it should.