Commit graph

15 commits

Author SHA1 Message Date
Linus Torvalds 6b38a402e9 Clean up different special *HEAD handling
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 14:04:13 -07:00
Dan Holmsand c591412cc0 [PATCH] git-resolve-script: Add LAST_MERGE and use git-rev-parse
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 <holmsand@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-20 15:49:39 -07:00
Linus Torvalds 55a716cc8c Clean up MERGE_HEAD and ORIG_HEAD also for the trivial fast-forward merges.
Otherwise you'll be bitten by a stale MERGE_HEAD like Jeff was..
2005-06-19 19:42:21 -07:00
Linus Torvalds 40d8cfe411 Trivial git script fixups
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 18:56:05 -07:00
Linus Torvalds 9c065315f7 Make "git commit" work correctly in the presense of a manual merge
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-08 13:33:15 -07:00
Linus Torvalds 5b1ea09de1 Make default merge messages denser.
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 10:09:41 -07:00
Linus Torvalds e5b905c448 git-resolve-script: stop when the automated merge fails
No point in doing a tree write that will just throw
confusing messages on the screen.
2005-06-06 19:37:25 -07:00
Linus Torvalds 3f4eff7530 git-resolve-script: don't wait for three seconds any more
We used to overwrite peoples dirty state.  We don't any more.  So don't
print the scary message and don't delay, just do the update already.
2005-06-06 17:39:14 -07:00
Linus Torvalds 220a0b527b More work on merging with git-read-tree..
Add a "-u" flag to update the tree as a result of a merge.

Right now this code is way too anal about things, and fails merges it
shouldn't, but let me fix up the different cases and this will allow for
much smoother merging even in the presense of dirty data in the working
tree.
2005-06-05 22:07:31 -07:00
Linus Torvalds 02ede67ad4 git-read-tree: be a lot more careful about merging dirty trees
We don't want to overwrite state that we haven't committed yet
when merging, so it's better to make git-read-tree fail than
end up with a merge tree that ends up not having the dirty changes.

Update git-resolve-script to fail cleanly when git-read-tree fails.
2005-06-05 20:02:31 -07:00
Linus Torvalds 866b973b5d git-resolve-script: use "git-apply --stat" instead of diffstat
Not everybody necessarily even has diffstat installed.
2005-05-30 17:45:41 -07:00
Jeff Garzik ea88ee46de [PATCH] optimize git-resolve-script
This change was suggested for my git-switch-tree script, and the same
issues apply to core git's git-resolve-script as well.
2005-05-25 11:59:37 -07:00
Junio C Hamano 8ac069ac0a Introduce GIT_DIR environment variable.
During the mailing list discussion on renaming GIT_ environment
variables, people felt that having one environment that lets the
user (or Porcelain) specify both SHA1_FILE_DIRECTORY (now
GIT_OBJECT_DIRECTORY) and GIT_INDEX_FILE for the default layout
would be handy.  This change introduces GIT_DIR environment
variable, from which the defaults for GIT_INDEX_FILE and
GIT_OBJECT_DIRECTORY are derived.  When GIT_DIR is not defined,
it defaults to ".git".  GIT_INDEX_FILE defaults to
"$GIT_DIR/index" and GIT_OBJECT_DIRECTORY defaults to
"$GIT_DIR/objects".

Special thanks for ideas and discussions go to Petr Baudis and
Daniel Barkalow.  Bugs are mine ;-)

Signed-off-by: Junio C Hamano <junkio@cox.net>
2005-05-09 22:57:58 -07:00
Linus Torvalds d5a72fd622 Fix git-resolve-script.
I'd stupidly forgotten one merge_head -> merge conversion, and
all my tests were for the fast-forward case that never triggered
the bug.
2005-05-05 16:07:56 -07:00
Linus Torvalds 67cc5c4ef8 Split "git-pull-script" into two parts
Separate out the merge resolve from the actual getting of the
data. Also, update the resolve phase to take advantage of the
fact that we don't need to do the commit->tree object lookup
by hand, since all the actors involved happily just act on a
commit object these days.
2005-05-05 11:43:30 -07:00