summaryrefslogtreecommitdiff
path: root/t
AgeCommit message (Collapse)AuthorFilesLines
2010-01-16Teach diff that modified submodule directory is dirtyLibravatar Junio C Hamano1-1/+83
A diff run in superproject only compares the name of the commit object bound at the submodule paths. When we compare with a work tree and the checked out submodule directory is dirty (e.g. has either staged or unstaged changes, or has new files the user forgot to add to the index), show the work tree side as "dirty". Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-16Show submodules as modified when they contain a dirty work treeLibravatar Jens Lehmann1-15/+68
Until now a submodule only then showed up as modified in the supermodule when the last commit in the submodule differed from the one in the index or the diffed against commit of the superproject. A dirty work tree containing new untracked or modified files in a submodule was undetectable when looking at it from the superproject. Now git status and git diff (against the work tree) in the superproject will also display submodules as modified when they contain untracked or modified files, even if the compared ref matches the HEAD of the submodule. Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-13Merge branch 'jc/checkout-merge-base'Libravatar Junio C Hamano2-1/+131
* jc/checkout-merge-base: rebase -i: teach --onto A...B syntax rebase: fix --onto A...B parsing and add tests "rebase --onto A...B" replays history on the merge base between A and B "checkout A...B" switches to the merge base between A and B
2010-01-13Merge branch 'cc/reset-more'Libravatar Junio C Hamano2-0/+296
* cc/reset-more: t7111: check that reset options work as described in the tables Documentation: reset: add some missing tables Fix bit assignment for CE_CONFLICTED "reset --merge": fix unmerged case reset: use "unpack_trees()" directly instead of "git read-tree" reset: add a few tests for "git reset --merge" Documentation: reset: add some tables to describe the different options reset: improve mixed reset error message when in a bare repo
2010-01-13Merge branch 'nd/sparse'Libravatar Junio C Hamano7-0/+581
* nd/sparse: (25 commits) t7002: test for not using external grep on skip-worktree paths t7002: set test prerequisite "external-grep" if supported grep: do not do external grep on skip-worktree entries commit: correctly respect skip-worktree bit ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID tests: rename duplicate t1009 sparse checkout: inhibit empty worktree Add tests for sparse checkout read-tree: add --no-sparse-checkout to disable sparse checkout support unpack-trees(): ignore worktree check outside checkout area unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout unpack-trees.c: generalize verify_* functions unpack-trees(): add CE_WT_REMOVE to remove on worktree alone Introduce "sparse checkout" dir.c: export excluded_1() and add_excludes_from_file_1() excluded_1(): support exclude files in index unpack-trees(): carry skip-worktree bit over in merged_entry() Read .gitignore from index if it is skip-worktree Avoid writing to buffer in add_excludes_from_file_1() ... Conflicts: .gitignore Documentation/config.txt Documentation/git-update-index.txt Makefile entry.c t/t7002-grep.sh
2010-01-12Merge branch 'maint'Libravatar Junio C Hamano1-1/+1
* maint: remote-curl: Fix Accept header for smart HTTP connections grep: -L should show empty files rebase--interactive: Ignore comments and blank lines in peek_next_command
2010-01-12remote-curl: Fix Accept header for smart HTTP connectionsLibravatar Shawn O. Pearce1-1/+1
We actually expect to see an application/x-git-upload-pack-result but we lied and said we Accept *-response. This was a typo on my part when I was writing the code. Fortunately the wrong Accept header had no real impact, as the deployed git-http-backend servers were not testing the Accept header before they returned their content. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-10Merge branch 'jk/maint-1.6.5-reset-hard'Libravatar Junio C Hamano1-0/+6
* jk/maint-1.6.5-reset-hard: reset: unbreak hard resets with GIT_WORK_TREE
2010-01-10Merge branch 'jk/push-to-delete'Libravatar Junio C Hamano1-0/+26
* jk/push-to-delete: builtin-push: add --delete as syntactic sugar for :foo
2010-01-10Merge branch 'mm/config-path'Libravatar Junio C Hamano1-0/+28
* mm/config-path: builtin-config: add --path option doing ~ and ~user expansion.
2010-01-10Merge branch 'bg/maint-remote-update-default'Libravatar Junio C Hamano1-0/+14
* bg/maint-remote-update-default: Fix "git remote update" with remotes.defalt set
2010-01-10Merge branch 'mm/diag-path-in-treeish'Libravatar Junio C Hamano1-0/+69
* mm/diag-path-in-treeish: Detailed diagnosis when parsing an object name fails.
2010-01-09t7111: check that reset options work as described in the tablesLibravatar Christian Couder1-0/+113
Some previous patches added some tables to the "git reset" documentation. These tables describe the behavior of "git reset" depending on the option it is passed and the state of the files in the working tree, the index, HEAD and the target commit. This patch adds some tests to make sure that the tables describe the behavior of "git reset". Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-07Merge branch 'sb/maint-octopus'Libravatar Junio C Hamano1-0/+51
* sb/maint-octopus: octopus: remove dead code octopus: reenable fast-forward merges octopus: make merge process simpler to follow Conflicts: git-merge-octopus.sh
2010-01-07Merge branch 'mv/commit-date'Libravatar Junio C Hamano1-0/+15
* mv/commit-date: Document date formats accepted by parse_date() builtin-commit: add --date option
2010-01-07Merge branch 'mo/bin-wrappers'Libravatar Junio C Hamano2-12/+30
* mo/bin-wrappers: INSTALL: document a simpler way to run uninstalled builds run test suite without dashed git-commands in PATH build dashless "bin-wrappers" directory similar to installed bindir
2010-01-07rebase -i: teach --onto A...B syntaxLibravatar Nanako Shiraishi1-0/+30
When rewriting commits on a topic branch, sometimes it is easier to compare the version of commits before and after the rewrite if they are based on the same commit that forked from the upstream. An earlier commit by Junio (fixed up by the previous commit) gives "--onto A...B" syntax to rebase command, and rebases on top of the merge base between A and B; teach the same to the interactive version, too. Signed-off-by: しらいし ななこ <nanako3@lavabit.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-07rebase: fix --onto A...B parsing and add testsLibravatar Nanako Shiraishi1-0/+75
The previous patch didn't parse "rebase --onto A...B" correctly when A isn't an empty string. It also tried to be careful to notice a case in which there are more than one merge bases, but forgot to give --all option to merge-base, making the test pointless. Fix these problems and add a test script to verify. Improvements to the script to parse A...B syntax was taken from review comments by Johannes Schindelin. Signed-off-by: しらいし ななこ <nanako3@lavabit.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-06t7002: test for not using external grep on skip-worktree pathsLibravatar Nguyễn Thái Ngọc Duy1-0/+12
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-06t7002: set test prerequisite "external-grep" if supportedLibravatar Nguyễn Thái Ngọc Duy1-0/+12
Add another test to set prerequisite EXTGREP if the current build supports external grep. This can be used to skip external grep only tests on builds that do not support this optimization. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-03Use warning function instead of fprintf(stderr, "Warning: ...").Libravatar Thiago Farina1-1/+1
Signed-off-by: Thiago Farina <tfransosi@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-03"reset --merge": fix unmerged caseLibravatar Junio C Hamano1-9/+31
Commit 9e8ecea (Add 'merge' mode to 'git reset', 2008-12-01) disallowed "git reset --merge" when there was unmerged entries. But it wished if unmerged entries were reset as if --hard (instead of --merge) has been used. This makes sense because all "mergy" operations makes sure that any path involved in the merge does not have local modifications before starting, so resetting such a path away won't lose any information. The previous commit changed the behavior of --merge to accept resetting unmerged entries if they are reset to a different state than HEAD, but it did not reset the changes in the work tree, leaving the conflict markers in the resulting file in the work tree. Fix it by doing three things: - Update the documentation to match the wish of original "reset --merge" better, namely, "An unmerged entry is a sign that the path didn't have any local modification and can be safely resetted to whatever the new HEAD records"; - Update read_index_unmerged(), which reads the index file into the cache while dropping any higher-stage entries down to stage #0, not to copy the object name from the higher stage entry. The code used to take the object name from the a stage entry ("base" if you happened to have stage #1, or "ours" if both sides added, etc.), which essentially meant that you are getting random results depending on what the merge did. The _only_ reason we want to keep a previously unmerged entry in the index at stage #0 is so that we don't forget the fact that we have corresponding file in the work tree in order to be able to remove it when the tree we are resetting to does not have the path. In order to differentiate such an entry from ordinary cache entry, the cache entry added by read_index_unmerged() is marked as CE_CONFLICTED. - Update merged_entry() and deleted_entry() so that they pay attention to cache entries marked as CE_CONFLICTED. They are previously unmerged entries, and the files in the work tree that correspond to them are resetted away by oneway_merge() to the version from the tree we are resetting to. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-03reset: use "unpack_trees()" directly instead of "git read-tree"Libravatar Stephan Beyer1-5/+7
This patch makes "reset_index_file()" call "unpack_trees()" directly instead of forking and execing "git read-tree". So the code is more efficient. And it's also easier to see which unpack_tree() options will be used, as we don't need to follow "git read-tree"'s command line parsing which is quite complex. As Daniel Barkalow found, there is a difference between this new version and the old one. The old version gives an error for "git reset --merge" with unmerged entries, and the new version does not when we reset the entries to some states that differ from HEAD. Instead, it resets the index entry and succeeds, while leaving the conflict markers in the corresponding file in the work tree (which will be corrected by the next patch). The code comes from the sequencer GSoC project: git://repo.or.cz/git/sbeyer.git (at commit 5a78908b70ceb5a4ea9fd4b82f07ceba1f019079) Mentored-by: Daniel Barkalow <barkalow@iabervon.org> Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-31Merge branch 'maint'Libravatar Junio C Hamano1-13/+13
* maint: branch: die explicitly why when calling "git branch [-a|-r] branchname". fast-import: Document author/committer/tagger name is optional SubmittingPatches: hints to know the status of a submitted patch.
2009-12-31Merge branch 'maint-1.6.0' into maintLibravatar Junio C Hamano1-13/+13
* maint-1.6.0: branch: die explicitly why when calling "git branch [-a|-r] branchname".
2009-12-31branch: die explicitly why when calling "git branch [-a|-r] branchname".Libravatar Matthieu Moy1-13/+13
The -a and -r options used to be silently ignored in such a command. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-31Fix "git remote update" with remotes.defalt setLibravatar Björn Gustavsson1-0/+14
Starting from commit 8db35596, "git remote update" (with no group name given) will fail with the following message if remotes.default has been set in the config file: fatal: 'default' does not appear to be a git repository fatal: The remote end hung up unexpectedly The problem is that the --multiple option is not passed to "git fetch" if no remote or group name is given on the command line. Fix the problem by always passing the --multiple option to "git fetch" (which actually simplifies the code). Reported-by: YONETANI Tomokazu Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-31builtin-config: add --path option doing ~ and ~user expansion.Libravatar Matthieu Moy1-0/+28
395de250 (Expand ~ and ~user in core.excludesfile, commit.template) introduced a C function git_config_pathname, doing ~/ and ~user/ expansion. This patch makes the feature available to scripts with 'git config --get --path'. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-30builtin-push: add --delete as syntactic sugar for :fooLibravatar Jan Krüger1-0/+26
Refspecs without a source side have been reported as confusing by many. As an alternative, this adds support for commands like: git push origin --delete somebranch git push origin --delete tag sometag Specifically, --delete will prepend a colon to all colon-less refspecs given on the command line, and will refuse to accept refspecs with colons to prevent undue confusion. Signed-off-by: Jan Krüger <jk@jk.gs> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-30Merge branch 'maint'Libravatar Junio C Hamano1-7/+7
* maint: textconv: stop leaking file descriptors commit: --cleanup is a message option git count-objects: handle packs bigger than 4G t7102: make the test fail if one of its check fails Documentation: always respect core.worktree if set
2009-12-30Merge branch 'maint-1.6.1' into maintLibravatar Junio C Hamano1-7/+7
* maint-1.6.1: textconv: stop leaking file descriptors commit: --cleanup is a message option git count-objects: handle packs bigger than 4G t7102: make the test fail if one of its check fails Conflicts: builtin-commit.c diff.c
2009-12-30reset: add a few tests for "git reset --merge"Libravatar Christian Couder1-0/+159
Commit 9e8eceab ("Add 'merge' mode to 'git reset'", 2008-12-01), added the --merge option to git reset, but there were no test cases for it. This was not a big problem because "git reset" was just forking and execing "git read-tree", but this will change in a following patch. So let's add a few test cases to make sure that there will be no regression. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-30reset: unbreak hard resets with GIT_WORK_TREELibravatar Jeff King1-0/+6
Commit 952dfc6 tried to tighten the safety valves for doing a "reset --hard" in a bare repository or outside the work tree, but accidentally broke the case for GIT_WORK_TREE. This patch unbreaks it. Most git commands which need a work tree simply use NEED_WORK_TREE in git.c to die before they get to their cmd_* function. Reset, however, only needs a work tree in some cases, and so must handle the work tree itself. The error that 952dfc6 made was to simply forbid certain operations if the work tree was not set up; instead, we need to do the same thing that NEED_WORK_TREE does, which is to call setup_work_tree(). We no longer have to worry about dying in the non-worktree case, as setup_work_tree handles that for us. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-29Merge branch 'maint-1.6.0' into maint-1.6.1Libravatar Junio C Hamano1-7/+7
* maint-1.6.0: commit: --cleanup is a message option t7102: make the test fail if one of its check fails
2009-12-29t7102: make the test fail if one of its check failsLibravatar Nguyễn Thái Ngọc Duy1-7/+7
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-27Merge branch 'jk/1.7.0-status'Libravatar Junio C Hamano6-53/+351
* jk/1.7.0-status: status/commit: do not suggest "reset HEAD <path>" while merging commit/status: "git add <path>" is not necessarily how to resolve commit/status: check $GIT_DIR/MERGE_HEAD only once t7508-status: test all modes with color t7508-status: status --porcelain ignores relative paths setting status: reduce duplicated setup code status: disable color for porcelain format status -s: obey color.status builtin-commit: refactor short-status code into wt-status.c t7508-status.sh: Add tests for status -s status -s: respect the status.relativePaths option docs: note that status configuration affects only long format commit: support alternate status formats status: add --porcelain output format status: refactor format option parsing status: refactor short-mode printing to its own function status: typo fix in usage git status: not "commit --dry-run" anymore git stat -s: short status output git stat: the beginning of "status that is not a dry-run of commit" Conflicts: t/t4034-diff-words.sh wt-status.c
2009-12-26Merge branch 'maint'Libravatar Junio C Hamano2-29/+29
* maint: Makefile: FreeBSD (both 7 and 8) needs OLD_ICONV Start 1.6.6.X maintenance track Add git-http-backend to command-list. t4019 "grep" portability fix t1200: work around a bug in some implementations of "find" Conflicts: RelNotes
2009-12-26Merge branch 'gb/1.7.0-diff-whitespace-only-output'Libravatar Junio C Hamano1-2/+12
* gb/1.7.0-diff-whitespace-only-output: No diff -b/-w output for all-whitespace changes
2009-12-26Merge branch 'jc/1.7.0-diff-whitespace-only-status'Libravatar Junio C Hamano1-0/+63
* jc/1.7.0-diff-whitespace-only-status: diff.c: fix typoes in comments Make test case number unique diff: Rename QUIET internal option to QUICK diff: change semantics of "ignore whitespace" options Conflicts: diff.h
2009-12-26Merge branch 'jc/1.7.0-push-safety'Libravatar Junio C Hamano7-17/+25
* jc/1.7.0-push-safety: Refuse deleting the current branch via push Refuse updating the current branch in a non-bare repository via push
2009-12-26Merge branch 'sr/vcs-helper'Libravatar Junio C Hamano1-2/+12
* sr/vcs-helper: tests: handle NO_PYTHON setting builtin-push: don't access freed transport->url Add Python support library for remote helpers Basic build infrastructure for Python scripts Allow helpers to report in "list" command that the ref is unchanged Fix various memory leaks in transport-helper.c Allow helper to map private ref names into normal names Add support for "import" helper command Allow specifying the remote helper in the url Add a config option for remotes to specify a foreign vcs Allow fetch to modify refs Use a function to determine whether a remote is valid Allow programs to not depend on remotes having urls Fix memory leak in helper method for disconnect Conflicts: Documentation/git-remote-helpers.txt Makefile builtin-ls-remote.c builtin-push.c transport-helper.c
2009-12-26t4019 "grep" portability fixLibravatar Junio C Hamano1-28/+28
Input to "grep" is supposed to be "text", but we deliberately feed output from "git diff --color" to sift it into two sets of lines (ones with errors, the other without). Some implementations of "grep" only report matches with the exit status, without showing the matched lines in their output (e.g. OpenBSD 4.6, which says "Binary file .. matches"). Fortunately, "grep -a" is often a way to force the command to treat its input as text. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-26t1200: work around a bug in some implementations of "find"Libravatar Junio C Hamano1-1/+1
"find path ..." command should exit with zero status only when all path operands were traversed successfully. When a non-existent path is given, however, some implementations of "find" (e.g. OpenBSD 4.6) exit with zero status and break the last test in t1200. Rewrite the test to check that there is no regular files in the objects fan-out directories to work around this bug; it is closer to what we are testing anyway. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-23git svn: add test for a git svn gc followed by a git svn mkdirsLibravatar Robert Zeh1-0/+40
git svn gc will compress the unhandled.log files that git svn mkdirs reads, causing git svn mkdirs to skip directory creation. [ew: trivial whitespace cleanups] Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Robert Zeh <robert.a.zeh@gmail.com>
2009-12-22Merge branch 'maint'Libravatar Junio C Hamano1-0/+13
* maint: Prevent git blame from segfaulting on a missing author name
2009-12-22Prevent git blame from segfaulting on a missing author nameLibravatar David Reiss1-0/+13
The human-readable author and committer name can be missing from commits imported from foreign SCM interfaces. Make sure we parse the "author" and "committer" line a bit more leniently and avoid segfaulting by assuming the name always exists. Signed-off-by: David Reiss <dreiss@facebook.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-12-21git-svn: detect cherry-picks correctly.Libravatar Sam Vilain1-2/+2
The old function was incorrect; in some instances it marks a cherry picked range as a merged branch (because of an incorrect assumption that 'rev-list COMMIT --not RANGE' would work). This is replaced with a function which should detect them correctly, memoized to limit the expense of dealing with branches with many cherry picks to one 'merge-base' call per merge, per branch which used cherry picking. Signed-off-by: Sam Vilain <sam@vilain.net> Acked-by: Eric Wong <normalperson@yhbt.net>
2009-12-21git-svn: fix some mistakes with interpreting SVN mergeinfo commit rangesLibravatar Sam Vilain1-1/+1
SVN's list of commit ranges in mergeinfo tickets is inclusive, whereas git commit ranges are exclusive on the left hand side. Also, the end points of the commit ranges may not exist; they simply delineate ranges of commits which may or may not exist. Fix these two mistakes. Signed-off-by: Sam Vilain <sam@vilain.net> Acked-by: Eric Wong <normalperson@yhbt.net>
2009-12-21git-svn: expand the svn mergeinfo test suite, highlighting some failuresLibravatar Sam Vilain3-172/+860
As shown, git-svn has some problems; not all svn merges are correctly detected, and cherry picks may incorrectly be detected as real merges. These test cases will be marked as _success once the relevant fixes are in. Signed-off-by: Sam Vilain <sam@vilain.net> Acked-by: Eric Wong <normalperson@yhbt.net>
2009-12-19t9146: use 'svn_cmd' wrapperLibravatar Eric Wong1-1/+1
Using 'svn' directly may not work for all users. Signed-off-by: Eric Wong <normalperson@yhbt.net>