summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2005-06-12[PATCH] Finish making --emu23 equivalent to pure 2-way merge.Libravatar Junio C Hamano3-21/+168
This adds #3ALT rule (and #2ALT rule for symmetry) to the read-tree 3-way merge logic that collapses paths that are added only in one branch and not in the other internally. This makes --emu23 to succeed in the last remaining case where the pure 2-way merge succeeded and earlier one failed. Running diff between t1001 and t1005 test scripts shows that the only difference between the two is that --emu23 can leave the states into separate stages so that the user can use usual 3-way merge resolution techniques to carry forward the local changes when pure 2-way merge would have refused to run. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12[PATCH] read-tree: fix too strong index requirement #5ALTLibravatar Junio C Hamano3-15/+31
This fixes too strong index requirement 3-way merge enforces in one case: the same file is added in both branches. In this case, the original code insisted that if the index file has that path, it must match our branch and be up-to-date. However in this particular case, it only has to match it, and can be dirty. We just need to make sure that we keep the work-tree copy instead of checking out the merge result. The resolution of such a path, however, cannot be left to outside script, because we will not keep the original stage0 entries for unmerged paths when read-tree finishes, and at that point, the knowledge of "if we resolve it to match the new file added in both branches, the merge succeeds and the work tree would not lose information, but we should _not_ update the work tree from the resulting index file" is lost. For this reason, the now code needs to resolve this case (#5ALT) internally. This affects some existing tests in the test suite, but all in positive ways. In t1000 (3-way test), this #5ALT case now gets one stage0 entry, instead of an identical stage2 and stage3 entry pair, for such a path, and one test that checked for merge failure (because the test assumed the "stricter-than-necessary" behaviour) does not have to fail anymore. In t1005 (emu23 test), two tests that involves a case where the work tree already had a change introduced in the upstream (aka "merged head"), the merge succeeds instead of failing. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12[PATCH] read-tree --emu23.Libravatar Junio C Hamano2-4/+393
This new flag causes two-way fast forward to internally use the three-way merge mechanism. This behaviour is intended to offer a better fast forward semantics when used in a dirty work tree. The new test t1005 is parallel to the existing t1001 "pure 2-way" tests, but some parts that are commented out would fail. These failures are due to three-way merge enforcing too strict index requirements for cases that could succeed. This problem will be addressed by later patches. Without even changing three-way mechanism, the --emu23 two-way fast forward already gives the user an easier-to-handle merge result when a file that "merged head" updates has local modifications. This is demonstrated as "case 16" test in t1005. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12[PATCH] Clean up read-tree two-way tests.Libravatar Junio C Hamano1-35/+42
This is in preparation for "2-way fast-forward emulated with 3-way mechanism" series. It does not change what the tests for pure 2-way do. It only changes how it tests things, to make reviewing of differences of the two tests easier in later steps. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12[PATCH] Add --diff-filter= output restriction to diff-* family.Libravatar Junio C Hamano7-21/+108
This is a halfway between debugging aid and a helper to write an ultra-smart merge scripts. The new option takes a string that consists of a list of "status" letters, and limits the diff output to only those classes of changes, with two exceptions: - A broken pair (aka "complete rewrite"), does not match D (deleted) or N (created). Use B to look for them. - The letter "A" in the diff-filter string does not match anything itself, but causes the entire diff that contains selected patches to be output (this behaviour is similar to that of --pickaxe-all for the -S option). For example, $ git-rev-list HEAD | git-diff-tree --stdin -s -v -B -C --diff-filter=BCR shows a list of commits that have complete rewrite, copy, or rename. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12[PATCH] diff-tree: --find-copies-harderLibravatar Junio C Hamano1-3/+10
Normally, diff-tree does not feed unchanged filepair to diffcore for performance reasons, so copies are detected only when the source file of the copy happens to be modified in the same changeset. This adds --find-copies-harder flag to tell diff-tree to sacrifice the performance in order to find copies the same way as other commands in diff-* family. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12[PATCH] Tutorial update to adjust for -B fixLibravatar Junio C Hamano1-7/+0
Now -B does not say silly "complete rewrite" anymore for small files such as the one in the tutorial example. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12[PATCH] Fix rename/copy when dealing with temporarily broken pairs.Libravatar Junio C Hamano2-2/+9
When rename/copy uses a file that was broken by diffcore-break as the source, and the broken filepair gets merged back later, the output was mislabeled as a rename. In this case, the source file ends up staying in the output, so we should label it as a copy instead. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12git-whatchanged: make default output format be pretty.Libravatar Linus Torvalds1-1/+1
If you want the raw stuff, just do git-whatchanged --pretty=raw and it wil act like it used to.
2005-06-12git-diff-tree: fix output with just "--pretty".Libravatar Linus Torvalds1-0/+1
It set verbose, but didn't set the output prefix to "diff-tree".
2005-06-12[PATCH] Support commit_format in diff-treeLibravatar Junio C Hamano1-1/+19
This steals --pretty command line option from rev-list and teaches diff-tree to do the same. With this change, $ git-whatchanged --pretty would work as expected. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12[PATCH] Re-Fix SIGSEGV on unmerged files in git-diff-files -pLibravatar Junio C Hamano2-1/+2
When an unmerged path was fed via diff_unmerged() into diffcore, it eventually called run_diff() with "one" and "two" parameters with NULL, but run_diff() was not written carefully enough to notice this situation. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-12git-apply: ignore empty git headersLibravatar Linus Torvalds1-1/+1
A meaningful (ie non-empty) git patch always has more information in the header than just the "diff --git" line itself: it needs to have either a patch associated with it (which implies "---" and "+++" lines in the header) or it needs to have rename/copy/delete/create information in it. Just ignore git patches which have no change information. Otherwise we'll end up with a patch that doesn't have filenames etc filled in, and we'll be unhappy.
2005-06-10[PATCH] Bugfix: read-cache.c:write_cache() misrecords number of entries.Libravatar Junio C Hamano1-2/+6
When we choose to omit deleted entries, we should subtract numbers of such entries from the total number in the header. Signed-off-by: Junio C Hamano <junkio@cox.net> Oops. Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-09git-read-tree: remove deleted files in the working directoryLibravatar Linus Torvalds2-6/+20
Only when "-u" is used of course.
2005-06-09[PATCH] Add git-diff-stages command.Libravatar Junio C Hamano2-1/+114
The diff-* brothers acquired a sibling, git-diff-stages. With an unmerged index file, you specify two stage numbers and it shows the differences between them. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-09git-read-tree: add "--reset" flagLibravatar Linus Torvalds1-9/+38
This is the same as "-m", but it will silently ignore any unmerged entries, which makes it useful for efficiently forcing a new position regardless of the state of the current index file. IOW, to reset to a previous HEAD (in case you have had a failed merge, for example), you'd just do git-read-tree -u --reset HEAD which will also update your working tree to the right state. NOTE! The "update" will not remove files that may have been added by the merge. Yet.
2005-06-08One more time.. Clean up git-merge-one-file-scriptLibravatar Linus Torvalds1-42/+15
This uses git-checkout-file to make sure that the full pathname is created, instead of the script having to verify it by hand. Also, simplify the 3-way merge case by just writing to the right file and setting the initial index contents early.
2005-06-08Fix up git-merge-one-file-scriptLibravatar Linus Torvalds1-7/+18
Junio points out that we may need to create the path leading up the the file we merge. And we need to be more careful with the "exec"s we've done to exit on success - only do the on the last command in the pipeline, not the first one ;)
2005-06-08Merge my and Petr's git-merge-one-file-script modificationsLibravatar Linus Torvalds1-1/+2
2005-06-08[PATCH] git-merge-one-file-script cleanups from CogitoLibravatar Petr Baudis1-15/+29
Chain the resolving sequences (e.g. git-cat-file - chmod - git-update-cache) through &&s so we stop right away in case one of the command fails, and report the error code to the script caller. Also add a copyright notice, some blank lines, ;; on a separate line, and nicer error messages. Signed-off-by: Petr Baudis <pasky@ucw.cz> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08Make sure we error out if we can't remove a file on automatic merges.Libravatar Linus Torvalds1-1/+2
Pointed out by Junio.
2005-06-08[PATCH] Tidy up some rev-list-related stuffLibravatar Petr Baudis3-259/+227
This patch tidies up the git-rev-list documentation and epoch.c, which are in severe clash with the unwritten coding style now, and quite unreadable. It also fixes up compile failures with older compilers due to variable declarations after code. The patch mostly wraps lines before or on the 80th column, removes plenty of superfluous empty lines and changes comments from // to /* */. Signed-off-by: Petr Baudis <pasky@ucw.cz> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08[PATCH] Add read-tree -m 3-way merge tests.Libravatar Junio C Hamano2-12/+366
This adds a set of tests to make sure that requirements on existing cache entries are checked when a read-tree -m 3-way merge is run with an already populated index file. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08[PATCH] Fix git-merge-one-file permissions auto-mergingLibravatar Petr Baudis1-0/+4
In the automerge case, permissions were not restored properly after the merge tool was invoked and overwrote the target file. Signed-off-by: Petr Baudis <pasky@ucw.cz> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08Remove MERGE_HEAD after committing mergeLibravatar Linus Torvalds1-1/+2
2005-06-08Make "git commit" work correctly in the presense of a manual mergeLibravatar Linus Torvalds2-3/+15
This has gotten only very light testing, but something like this is clearly necessary and did the right thing for the one case I threw at it.
2005-06-08cvs-migration: add more of a header to the "annotate" discussionLibravatar Linus Torvalds1-3/+20
2005-06-08[PATCH] Miniscule correction of diff-format.txtLibravatar Christian Meder1-6/+7
Add missing "space" element to the description of the diff-format. Signed-off-by: Christian Meder <chris@absolutegiganten.org> Acked-by: Petr Baudis <pasky@ucw.cz> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08[PATCH] Anal retentive 'const unsigned char *sha1'Libravatar Jason McMullan14-22/+22
Make 'sha1' parameters const where possible Signed-off-by: Jason McMullan <jason.mcmullan@timesys.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08[PATCH] git-diff-cache: handle pathspec beginning with a dashLibravatar Jonas Fonseca1-1/+6
Parse everything after '--' as tree name or pathspec. Signed-off-by: Jonas Fonseca <fonseca@diku.dk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08Leave merge failures in the filesystemLibravatar Linus Torvalds1-12/+19
This changes how we handle merges: if a automated merge fails, we will leave the index as a clean entry pointing to the original branch, and leave the actual file _dirty_ the way the "merge" program left it. You can then just do "git-diff-files -p" to see what the merge conflicts did, fix them up, and commit the end result. NOTE NOTE NOTE! Do _not_ use "git commit" to commit such a merge. It won't set the parents right. I'll need to fix that. In the meantime, you'd need to merge using git-commit-tree $(git-write) -p HEAD -p MERGE_HEAD or something like that by hand.
2005-06-08Fix SIGSEGV on unmerged files in git-diff-files -pLibravatar Linus Torvalds1-1/+1
NULL is not considered a VALID pathspec.
2005-06-08[PATCH] Tests: read-tree -m test updates.Libravatar Junio C Hamano2-32/+30
This updates t1000 (basic 3-way merge test) to check the merge results for both successful cases (earlier one checked the result for only one of them). Also fixes typos in t1002 that broke '&&' chain, potentially missing a test failure before the chain got broken. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08Make default merge messages denser.Libravatar Linus Torvalds2-5/+2
In particular, make them readable on one line since that's what all the tools like git-shortlog and gitk end up showing.
2005-06-08[PATCH] three --merge-order bug fixesLibravatar Jon Seymour2-3/+177
This patch fixes three bugs in --merge-order support * mark_ancestors_uninteresting was unnecessarily exponential which caused a problem when a commit with no parents was merged near the head of something like the linux kernel * removed a spurious statement from find_base which wasn't apparently causing problems now, but wasn't correct either. * removed an unnecessarily strict check from find_base_for_list that causes a problem if git-rev-list commit ^parent-of-commit is specified. * added some unit tests which were accidentally omitted from original merge-order patch The fix to mark_ancestors_uninteresting isn't an optimal fix - a full graph scan will still be performed in this case even though it is not strictly required. However, a full graph scan is linear and still no worse than git-rev-list HEAD which runs in less than 2 seconds on a warm cache. Signed-off-by: Jon Seymour <jon.seymour@gmail.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-08[PATCH] git-cvs2git: create tagsLibravatar Sven Verdoolaege1-0/+7
cvsps seems to put a space after the tag name, so we remove it first.
2005-06-08git-apply: creatign empty files is nonfatalLibravatar Linus Torvalds1-2/+5
(but it will result in a warning)
2005-06-07Talk about "git cvsimport" in the cvs migration docsLibravatar Linus Torvalds1-1/+89
We should add a lot more information about how you copy repositories, pulling and pushing, merging etc. Oh, well. I'm not exactly known for my documentation skills. Maybe somebody else will help me..
2005-06-07[PATCH] Documentation: describe diff tweaking (fix).Libravatar Junio C Hamano1-1/+1
I cannot count ;-) Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-06-07[PATCH] Start cvs-migration documentationLibravatar Junio C Hamano1-0/+105
This does a section to talk about "cvs annotate". Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-07git-read-tree: -u without -m is meaningless. Don't allow it.Libravatar Linus Torvalds1-1/+3
Also, documetn the "-u" in the usage string.
2005-06-07git-read-tree: make one-way merge also honor the "update" flagLibravatar Linus Torvalds1-5/+5
It didn't set CE_UPDATE before, so "-u" was a no-op.
2005-06-07[PATCH] read-tree: update documentation for 3-way merge.Libravatar Junio C Hamano1-24/+66
This explains the new merge world order that formally assigns specific meaning to each of three tree-ish command line arguments. It also mentions -u option Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-07Add CVS import scripts and programsLibravatar Linus Torvalds3-2/+336
This gets the "cvs2git" program from the old git-tools archive, and adds a nice script around it that makes it much easier to use. With this, you should be able to import a CVS archive using just a simple git cvsimport <cvsroot> <module> and you're done. At least it worked for my one single test. NOTE!! This may need tweaking. It currently expects (and verifies) that cvsps version 2.1 is installed, but you can't actually set any of the cvsps parameters, like the time fuzz.
2005-06-07git-ssh-push/pull: usability improvementsLibravatar Linus Torvalds4-8/+13
Allow traditional ssh path specifiers (host:path), and let the user override the command name on the other end. With this, I can push to kernel.org with this script export GIT_SSH_PULL=/home/torvalds/bin/git-ssh-pull git-ssh-push -a -v -w heads/master heads/master master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6.git which while not pretty is at least workable.
2005-06-07[PATCH] Use ntohs instead of htons to convert ce_flags to host byte orderLibravatar Timo Hirvonen1-5/+5
Use ntohs instead of htons to convert ce_flags to host byte order Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-07[PATCH] read-tree: save more user hassles during fast-forward.Libravatar Junio C Hamano4-13/+698
This implements the "never lose the current cache information or the work tree state, but favor a successful merge over merge failure" principle in the fast-forward two-tree merge operation. It comes with a set of tests to cover all the cases described in the case matrix found in the new documentation. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-06[PATCH] Document git-ssh-pull and git-ssh-pushLibravatar Daniel Barkalow2-11/+45
This fixes the documentation for git-ssh-push, as called by users (if you run git-ssh-pull or git-ssh-push on one machine, the other runs on the other machine, and they transfer data in the specified direction). This also adds documentation for the -w option and for using filenames for the commit-id (which does what you'd want: uses the source side's value, not the value already on the target, even if you're running it on the target). It also credits me with the programs and the documentation for git-ssh-push. Someone who knows asciidoc should make sure I didn't mess up the formatting. I'm only sure of the ascii part. Signed-off-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-06git-resolve-script: stop when the automated merge failsLibravatar Linus Torvalds1-1/+5
No point in doing a tree write that will just throw confusing messages on the screen.