aboutsummaryrefslogtreecommitdiff
path: root/git-checkout.sh
Commit message (Collapse)AuthorAge
* git-checkout: allow "checkout HEAD -- path"Junio C Hamano2006-07-31
| | | | | | | Even though -- is redundant in this case, we should allow it to prevent confusion. Signed-off-by: Junio C Hamano <junkio@cox.net>
* checkout -m: fix read-tree invocationv1.4.1-rc2Junio C Hamano2006-06-28
| | | | | | | | When we updated "read-tree -m -u" to be careful about not removing untracked working tree files, we broke "checkout -m" to switch between branches. Signed-off-by: Junio C Hamano <junkio@cox.net>
* checkout -f: do not leave untracked working tree files.Junio C Hamano2006-06-20
| | | | | | | | | | | | | | | | | | | | | | Earlier we did not consider untracked working tree files "precious", but we have always considered them fair game to clobber. These days, branch switching by read-tree is more careful and tries to protect untracked working tree files. This caused the following workflow to stop working: git checkout one-branch-with-file-F git checkout -f another-without-file-F git pull . one-branch-with-file-F Because the second checkout leaves F from the previous state as untracked file in the working tree, the merge would fail, trying to protect F from being clobbered. This changes "git checkout -f" to remove working tree files that are known to git in the switched-from state but do not exist in the switched-to state, borrowing the same logic from "reset --hard". Signed-off-by: Junio C Hamano <junkio@cox.net>
* Test that git-branch -l works.Shawn Pearce2006-05-24
| | | | | | | | | | | | | | | | | | If the user supplies -l to git-branch when creating a new branch then the new branch's log should be created automatically and the branch creation should be logged in that log. Further if a branch is being deleted and it had a log then also verify that the log was deleted. Test git-checkout -b foo -l for creating a new branch foo with a log and checking out that branch. Fixed git-checkout -b foo -l as the branch variable name was incorrect in the script. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* Enable ref log creation in git checkout -b.Shawn Pearce2006-05-19
| | | | | | | | | | | | | Switch git checkout -b to use git-update-ref rather than echo and a shell I/O redirection. This is more in line with typical GIT commands and allows -b to be logged according to the normal ref logging rules. Added -l option to allow users to create the ref log at the same time as creating a branch. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* checkout: use --aggressive when running a 3-way merge (-m).Junio C Hamano2006-05-09
| | | | | | | | After doing an in-index 3-way merge, we always do the stock "merge-index merge-one-file" without doing anything fancy; use of --aggressive helps performance quite a bit. Signed-off-by: Junio C Hamano <junkio@cox.net>
* More useful/hinting error messages in git-checkoutv1.2.1Josef Weidendorfer2006-02-15
| | | | | Signed-off-by: Josef Weidendorfer <Josef.Weidendorfer@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
* checkout: fix dirty-file display.Junio C Hamano2006-02-14
| | | | | | | When we refused to switch branches, we incorrectly showed differences from the branch we would have switched to. Signed-off-by: Junio C Hamano <junkio@cox.net>
* git-commit: show dirtiness including index.Junio C Hamano2006-02-12
| | | | | | | | | | | | | Earlier, when we switched a branch we used diff-files to show paths that are dirty in the working tree. But we allow switching branches with updated index ("read-tree -m -u $old $new" works that way), and only showing paths that have differences in the working tree but not paths that are different in index was confusing. This shows both as modified from the top commit of the branch we just have switched to. Signed-off-by: Junio C Hamano <junkio@cox.net>
* [PATCH] checkout: show dirty state upon switching branches.Junio C Hamano2006-01-14
| | | | | | | | | This shows your working file state when you switch branches. As a side effect, "git checkout" without any branch name (i.e. stay on the current branch) becomes a more concise shorthand for the "git status" command. Signed-off-by: Junio C Hamano <junkio@cox.net>
* checkout: merge local modifications while switching branches.Junio C Hamano2006-01-13
| | | | | | | | | | | | | | | | | | | * Instead of going interactive, introduce a command line switch '-m' to allow merging changes when normal two-way merge by read-tree prevents branch switching. * Leave the unmerged stages intact if automerge fails, but reset index entries of cleanly merged paths to that of the new branch, so that "git diff" (not "git diff HEAD") would show the local modifications. * Swap the order of trees in read-tree three-way merge used in the fallback, so that `git diff` to show the conflicts become more natural. * Describe the new option and give more examples in the documentation. Signed-off-by: Junio C Hamano <junkio@cox.net>
* checkout: automerge local changes while switching branches.Junio C Hamano2006-01-13
| | | | | | | | | | | When switching branches, if the working tree has a local modification at paths that are different between current and new branches, we refused the operation saying "cannot merge." This attempts to do an automerge for such paths. This is still experimental. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Adjust to ls-tree --full-name when run from a subdirectory.Junio C Hamano2005-12-23
|\ | | | | | | | | | | | | | | A proposed change to show cwd relative paths by default from ls-tree when run from a subdirectory means we would need to give --full-name option to it. Signed-off-by: Junio C Hamano <junkio@cox.net>
* | checkout: sometimes work from a subdirectory.Junio C Hamano2005-12-22
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | git-checkout does two very different things, and what they should do when run from subdirectory are quite different. It does not make any sense to run the one that switches the current head from anywhere other than the toplevel: git-checkout [-f] <branch> git-checkout [-b <branch>] <committish> We could of course chdir to top and do the whole-tree checkout in git-checkout, but the point is the operation does not make sense on a partial tree. The whole tree is checked out. The other form is to update the index file and working tree file selectively: git-checkout <treeish> <file>... ;# out of tree to index and file git-checkout -- <file>... ;# out of index to file This form _does_ make sense to run from subdirectory; and I myself often wish we supported this. So here is a patch to do both. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Comment fixes.Junio C Hamano2005-12-16
| | | | Signed-off-by: Junio C Hamano <junkio@cox.net>
* Trivial usage string clean-upfreku045@student.liu.se2005-12-14
| | | | | Signed-off-by: Fredrik Kuivinen <freku045@student.liu.se> Signed-off-by: Junio C Hamano <junkio@cox.net>
* git-sh-setup: die if outside git repository.Junio C Hamano2005-11-25
| | | | | | | | Now all the users of this script detect its exit status and die, complaining that it is outside git repository. So move the code that dies from all callers to git-sh-setup script. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Teach update-index to read from ls-tree.Junio C Hamano2005-11-23
| | | | | | | | | | | | git-update-index --index-info can almost be usable to read from ls-tree output to update the index (and not the working tree file) to HEAD commit, but not quite. It was designed to read from git-apply --index-info output, and does not want " blob " in ls-tree output. Accept that as well. This lets us update "git-checkout <ent> <path>" that used to filter the extra " blob " string out. Noted by Luben. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Do not fail on hierarchical branch names.Junio C Hamano2005-11-02
| | | | | | | | | | | | "git-checkout -b frotz/nitfol master" failed to create $GIT_DIR/refs/heads/frotz/nitfol but went ahead and updated $GIT_DIR/HEAD to point at it, resulting in a corrupt repository. Exit when we cannot create the new branch with an error status. While we are at it, there is no reason to forbid subdirectories in refs/heads, so make sure we handle that correctly. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Add usage statement to git-checkout.shChris Shoemaker2005-10-30
| | | | | Signed-off-by: Chris Shoemaker <c.shoemaker@cox.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
* git-checkout: revert specific paths to either index or a given tree-ish.Junio C Hamano2005-10-18
| | | | | | | | | | When extra paths arguments are given, git-checkout reverts only those paths to either the version recorded in the index or the version recorded in the given tree-ish. This has been on the TODO list for quite a while. Signed-off-by: Junio C Hamano <junkio@cox.net>
* git-check-ref-format: reject funny ref names.Junio C Hamano2005-10-15
| | | | | | | | | | | | | | Update check_ref_format() function to reject ref names that: * has a path component that begins with a ".", or * has a double dots "..", or * has ASCII control character, "~", "^", ":" or SP, anywhere, or * ends with a "/". Use it in 'git-checkout -b', 'git-branch', and 'git-tag' to make sure that newly created refs are well-formed. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Add git-symbolic-refJunio C Hamano2005-10-01
| | | | | | | | | | | | | This adds the counterpart of git-update-ref that lets you read and create "symbolic refs". By default it uses a symbolic link to represent ".git/HEAD -> refs/heads/master", but it can be compiled to use the textfile symbolic ref. The places that did 'readlink .git/HEAD' and 'ln -s refs/heads/blah .git/HEAD' have been converted to use new git-symbolic-ref command, so that they can deal with either implementation. Signed-off-by: Junio C Hamano <junio@twinsun.com>
* [PATCH] Remove total confusion from "git checkout"Linus Torvalds2005-09-19
| | | | | | | | | | | | The target to check out does not need to be a branch. The _result_ of the checkout needs to be a branch. Don't confuse the two, and then insult the user. Insulting is ok, but I personally get really pissed off is a tool is both confused and insulting. At least be _correct_ and insulting. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
* [PATCH] Make git-checkout failure message more friendly.Junio C Hamano2005-09-16
| | | | | | ... or less so, perhaps ;-). Suggested by Jeff Garzik. Signed-off-by: Junio C Hamano <junkio@cox.net>
* [PATCH] Make 'git checkout' a bit more forgiving when switching branches.Junio C Hamano2005-09-12
| | | | | | | | | | | | | | | | | | If you make a commit on a path, and then make the path cache-dirty afterwards without changing its contents, 'git checkout' to switch to another branch is prevented because switching the branches done with 'read-tree -m -u $current $next' detects that the path is cache-dirty, but it does not bother noticing that the contents of the path has not been actualy changed. Since switching branches would involve checking out paths different in the two branches, hence it is reasonably expensive operation, we can afford to run update-index before running read-tree to reduce this kind of false change from triggering the check needlessly. Signed-off-by: Junio C Hamano <junkio@cox.net>
* Big tool rename.Junio C Hamano2005-09-07
As promised, this is the "big tool rename" patch. The primary differences since 0.99.6 are: (1) git-*-script are no more. The commands installed do not have any such suffix so users do not have to remember if something is implemented as a shell script or not. (2) Many command names with 'cache' in them are renamed with 'index' if that is what they mean. There are backward compatibility symblic links so that you and Porcelains can keep using the old names, but the backward compatibility support is expected to be removed in the near future. Signed-off-by: Junio C Hamano <junkio@cox.net>