AgeCommit message (Collapse)Author
2005-06-21Clean up different special *HEAD handlingLinus Torvalds
We codify the following different heads (in addition to the main "HEAD", which points to the current branch, of course): - FETCH_HEAD Populated by "git fetch" - ORIG_HEAD The old HEAD before a "git pull/resolve" (successful or not) - LAST_MERGE The HEAD we're currently merging in "git pull/resolve" - MERGE_HEAD The previous head of a unresolved "git pull", which gets committed by a "git commit" after manually resolving the result We used to have "MERGE_HEAD" be populated directly by the fetch, and we removed ORIG_HEAD and LAST_MERGE too aggressively.
2005-06-21[PATCH] Fix several gcc4 signedness warningsMika Kukkonen
Here is a patch that fixes several gcc4 warnings about different signedness, all between char and unsigned char. I tried to keep the patch minimal so resertod to casts in three places. Signed-off-by: Mika Kukkonen <> Signed-off-by: Linus Torvalds <>
2005-06-21git checkout: fix default head caseLinus Torvalds
The "${new=$old}" syntax only works for an undefined 'new', not for an empty one. I knew that. Really. I'm not stupid.
2005-06-21Make "git checkout" know about different branchesLinus Torvalds
Now "git checkout xyzzy" will check out branch "xyzzy" and switch the HEAD to it.
2005-06-21"git checkout": add "-u" flag to update HEAD conditionallyLinus Torvalds
And fix braino on testing "-f".
2005-06-21Add "git checkout" that does what the name suggestsLinus Torvalds
It is careful by default and refuses to overwrite old info, but if you want to force everything to be re-read, use the "-f" flag. Some day I'll make it take individual filenames too. Right now it's all-or-nothing.
2005-06-21[PATCH] fix scalability problems with git-deltafy-scriptNicolas Pitre
Current version would spin forever and exhaust memory while attempting to sort all files from all revisions at once, until it dies before even doing any real work. This is especially noticeable when used on a big repository like the imported bkcvs repo for the Linux kernel. This patch allows for batching the sort to put a bound on needed resources and making progress early, as well as including some small cleanups. Signed-off-by: Nicolas Pitre <> Signed-off-by: Linus Torvalds <>
2005-06-21[PATCH] git-apply: Don't barf when --stat'ing a diff with no line changes.Sven Verdoolaege
Diffs with only mode changes didn't pass through git-apply --stat. [ Linus' note: they did for me, on my ppc64, where division by zero just silently returns zero. Duh. ] Signed-off-by: Linus Torvalds <>
2005-06-21Let "git commit" take arguments for files to commit.Linus Torvalds
It does a "git-update-cache" on the arguments, meaning that you can commit files without doing a separate "git-update-cache". This commit was done with git commit git-commit-script for example.
2005-06-21Add "-q" flag to git-update-cacheLinus Torvalds
It suppresses the "needs update" message for subsequent "--refresh" cases (but not other errors). Will be useful for "git commit". Stay tuned.
2005-06-21Change parent syntax to "xyz^" instead of "xyz.p"Linus Torvalds
The ".pN" thing might be a common ending of a tag, and in contrast, ^ already is a special character for revisions so use that instead.
2005-06-21Make rev-parse understand "extended sha1" syntaxLinus Torvalds
You can say "HEAD.p" for the "parent of HEAD". It nests, so HEAD.p2.p means parent of second parent of HEAD (which obviously depends on HEAD being a merge).
2005-06-21Keep the parents in order when parsing commitsLinus Torvalds
We used to keep the parents in reverse order in the commit_list. Most users don't care, but it's wrong, and the next commit does care.
2005-06-20git-rev-parse: flush "default" head when encountering something unexpectedLinus Torvalds
The unexpected thing is likely a pathname, we need the default for that too.
2005-06-20[PATCH] git-resolve-script: Add LAST_MERGE and use git-rev-parseDan Holmsand
Make git-resolve-script only write MERGE_HEAD if a merge actually occurred. All merge failures leave ORIG_HEAD and LAST_MERGE behind (instead of ORIG_HEAD and MERGE_HEAD). Use git-rev-parse to expand arguments (and check for bad ones). Signed-off-by: Dan Holmsand <> Signed-off-by: Linus Torvalds <>
2005-06-20git-rev-parse: parse ".." before simple SHA1'sLinus Torvalds
This fixes "<hexsha1>..*", since get_sha1() will happily ignore any garbage at the end and thus we never got to the ".." check before.
2005-06-20Avoid gcc warning in diff-stages.cLinus Torvalds
Put explicit parentheses around && in ||-expression.
2005-06-20[PATCH] Fix for --merge-order, --max-age interaction issueJon Seymour
This patch fixes a problem reported by Paul Mackerras regarding the interaction of the --merge-order and --max-age switches of git-rev-list. This patch applies to the current Linus HEAD. A cleaner fix for the same problem in my current HEAD will follow later. With this change, --merge-order produces the same result as no --merge-order on the linux-2.6 git repository, to wit: $> git-rev-list --max-age=1116330140 bcfff0b471a60df350338bcd727fc9b8a6aa54b2 | wc -l 655 $> git-rev-list --merge-order --max-age=1116330140 bcfff0b471a60df350338bcd727fc9b8a6aa54b2 | wc -l 655 Signed-off-by: Jon Seymour <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Prevent git-rev-list without --merge-order producing duplicates in ↵Jon Seymour
output If b is reachable from a, then: git-rev-list a b argument would print one of the commits twice. This patch fixes that problem. A previous problem fixed it for the --merge-order switch. Signed-off-by: Jon Seymour <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Prevent git-rev-list --merge-order producing duplicates in the outputJon Seymour
If a is reachable from b, then git-rev-list --merge-order b a would produce a duplicate output of b. This causes a problem for an upcoming version of gitk since it breaks the --merge-order ordering invariant. This patch fixes the problem for the --merge-order switch. A subsequent patch will fix the problem for the non --merge-order switch. Signed-off-by: Jon Seymour <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Relaxes error checking in epoch.c to allow duplicate parentsJon Seymour
Given that real trees in the wild include parents with duplicate parents, I have relaxed over-zealous error checking in epoch.c and dealt with the problem a different way - duplicate parents are now silently ignored. Signed-off-by: Jon Seymour <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Fixes problem with --merge-order head ^headJon Seymour
git-rev-list --merge-order HEAD ^HEAD was faulting rather than generating an empty output. This patch fixes that problem. Signed-off-by: Jon Seymour <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Tweaked --merge-order --show-breaks output in case specified head ↵Jon Seymour
has no parent git-rev-list --merge-order --show-breaks root Was outputing: | root It now outputs: = root Which is consistent with the behaviour of other cases. Signed-off-by: Jon Seymour <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Additional git-rev-list unit tests to demonstrate problems that ↵Jon Seymour
require fixes 1. --merge-order doesn't deal properly with a specified head that has no parent * FAIL 11: head has no parent 2. --merge-order doesn't deal properly with arguments of the form head ^head * FAIL 30: head ^head --merge-order git-rev-list --merge-order --show-breaks a3 ^a3 3. if one of the specified heads is reachable from the other, the head gets printed twice and this causes problems for upcoming versions of gitk. This is true for both --merge-order and non --merge-order style of invocations. * FAIL 24: one specified head reachable from another a4, c3, --merge-order * FAIL 26: one specified head reachable from another a4, c3, no --merge-order * FAIL 27: one specified head reachable from another c3, a4, no --merge-order 4. --merge-order aborts with commits that list the same parent should handle it more gracefully. * no longer unit testable 5. broken interaction between --merge-order and --max-age previously posted as: "[PATCH 1/2] Test case that demonstrates problem with --merge-order, --max-age interaction" * FAIL 23: --max-age=c3, --merge-order Later patches in this patch set fix these problems. Signed-off-by: Jon Seymour <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Rework -B output.Junio C Hamano
Patch for a completely rewritten file detected by the -B flag was shown as a pair of creation followed by deletion in earlier versions. This was an misguided attempt to make reviewing such a complete rewrite easier, and unnecessarily ended up confusing git-apply. Instead, show the entire contents of old version prefixed with '-', followed by the entire contents of new version prefixed with '+'. This gives the same easy-to-review for human consumer while keeping it a single, regular modification patch for machine consumption, something that even GNU patch can grok. Signed-off-by: Junio C Hamano <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Update diff documentation.Junio C Hamano
This updates diff documentation to discuss --find-copies-harder, and adds descriptions for options that were not described earlier. Signed-off-by: Junio C Hamano <> Signed-off-by: Linus Torvalds <>
2005-06-20[PATCH] Make -C less eager.Junio C Hamano
Like diff-tree, this patch makes -C option for diff-* brothers to use only pre-image of modified files as rename/copy detection by default. Give --find-copies-harder to use unmodified files to find copies from as well. This also fixes "diff-files -C" problem earlier noticed by Linus. It was feeding the null sha1 even when the file in the work tree was known to match what is in the index file. This resulted in diff-files showing everything in the project. Signed-off-by: Junio C Hamano <> Signed-off-by: Linus Torvalds <>
2005-06-20Make "git commit" clean up after itselfLinus Torvalds
Noted by Jeff.
2005-06-20Clean up MERGE_HEAD and ORIG_HEAD also for the trivial fast-forward merges.Linus Torvalds
Otherwise you'll be bitten by a stale MERGE_HEAD like Jeff was..
2005-06-19[PATCH] cvs2git.c: support incremental conversionPanagiotis Issaris
Add -u option to indicate incremental conversion. I wanted to be able to track CVS repositories in a GIT repository. The cvs2git program worked fine with the initial import but needed a tiny modification to enable me to resync the GIT repository with the updated CVS tree. [ The original version of this patch failed to track the correct branch on the first new commit. Fixed and tested by Sven. ] Signed-off-by: Panagiotis Issaris <> Signed-off-by: Sven Verdoolaege <> Signed-off-by: Linus Torvalds <>
2005-06-19[PATCH] ssh-push.c: Fix handling of ssh://host/path URLsSven Verdoolaege
Previous patch to fix host:path notation broke handling of ssh://host/path notation. Signed-off-by: Sven Verdoolaege <> Signed-off-by: Linus Torvalds <>
2005-06-19git-commit-tree: ignore duplicate parentsLinus Torvalds
But warn about them. If somebody really ends up later wanting to explicitly add a note that something has the same parent twice (who knows, there are strange people around), we can add a flag to say that it's expected and ok. This was brought on by a commit in the kernel tree, where a repeated merge caused a duplicate parent. Parent duplicates aren't "wrong" per se, they're just in practice not something you are ever interested in.
2005-06-19Fix up INSTALL and "git add"Linus Torvalds
As suggested by Junio
2005-06-19read-cache.c: remove stray debugging printfLinus Torvalds
Pointed out by Junio, part of my debugging of the rewrite of the file/dir conflict handling.
2005-06-19Re-implement "check_file_directory_conflict()"Linus Torvalds
This is (imho) more readable, and is also a lot faster. The expense of looking up sub-directory beginnings was killing us on things like "git-diff-cache", even though that one didn't even care at all about the file vs directory conflicts. We really only care when somebody tries to add a conflicting name to stage 0. We should go through the conflict rules more carefully some day.
2005-06-19Avoid warning about function without return.Linus Torvalds
Strangely, this warning only shows up when not compiling with "-O2", which is why I didn't see it originally.
2005-06-18[PATCH] cvs2git and file permissionsSven Verdoolaege
git-cvs2git: propagate mode information Let cvs checkout in a temporary directory rather than using the pipe option to avoid loss of mode information. Signed-off-by: Sven Verdoolaege <> Signed-off-by: Linus Torvalds <>
2005-06-18Make "pretty" commit logs always show merge informationLinus Torvalds
Otherwise the "git log" information doesn't tell enough to make sense of a merge. I'll need to add some parent information for regular entries too, I think, but the merge is more important.
2005-06-18git-rev-list: add "--bisect" flag to find the "halfway" pointLinus Torvalds
This is useful for doing binary searching for problems. You start with a known good and known bad point, and you then test the "halfway" point in between: git-rev-list --bisect bad ^good and you test that. If that one tests good, you now still have a known bad case, but two known good points, and you can bisect again: git-rev-list --bisect bad ^good1 ^good2 and test that point. If that point is bad, you now use that as your known-bad starting point: git-rev-list --bisect newbad ^good1 ^good2 and basically at every iteration you shrink your list of commits by half: you're binary searching for the point where the troubles started, even though there isn't a nice linear ordering.
2005-06-17Use "-M" instead of "-C" for "git diff" and "git status"Linus Torvalds
The "C" in "-C" may stand for "Cool", but it's also pretty slow, since right now it leaves all unmodified files to be tested even if there are no new files at all. That just ends up being unacceptably slow for big projects, especially if it's not all in the cache.
2005-06-17git-apply: use default name for mode change patchesLinus Torvalds
Pure mode changes won't have the file-name in the extended header lines, so make sure we pick it up from the default name from the "diff --git" line.
2005-06-17Don't use -C in "git diff"Linus Torvalds
Right now it confuses at least git-diff-files, since it leaves all the files (whether changed or not) in the diff queue.
2005-06-17Add some installation notes in INSTALLLinus Torvalds
Jens was the second person who hadn't heard of the "merge" program, and didn't have it installed. So document as many dependency and install issues as I can think of.
2005-06-15git-read-tree: fix "--reset" handlingLinus Torvalds
2005-06-15Update tutorial a bit for scripted helpers.Linus Torvalds
2005-06-15Trivial git script fixupsLinus Torvalds
Fix permissions, and add trivial "reset" and "add" scripts. The "reset" script just resets the index back to head, while the "add" script is just a crutch for people used to do "cvs add".
2005-06-14[PATCH] ssh-push: Don't add '/' to pathnameSven Verdoolaege
Paths in the host:path notation are usually interpreted relative to the login directory rather than relative to the root directory. Signed-off-by: Sven Verdoolaege <> Signed-off-by: Linus Torvalds <>
2005-06-14[PATCH] Unset TZ in t5000Mark Allen
Unset TZ to force GMT in test #4 and add a set of parens around the length function in the awk script. Signed-off-by: Mark Allen <> Acked-by: Rene Scharfe <> Signed-off-by: Linus Torvalds <>
2005-06-14Make 'git' script be a bit more helpful on unrecognized commandsLinus Torvalds
2005-06-14Make "git commit" handle initial commits tooLinus Torvalds
No need to confuse ex-CVS users with a complex initial commit sequence.