summaryrefslogtreecommitdiff
path: root/builtin-reset.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-03-03 09:20:19 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-03-03 09:20:19 (GMT)
commitf830d45b9fdb04a5d79c25bb3a3d891d8d3b58e9 (patch)
treecfa4d86ace88be833c37498023967023bfa02743 /builtin-reset.c
parentbd56ff54f710d463a6858bdc7ef6245f9ef30f42 (diff)
parent7435982102093179474a128648179a44042d8a1c (diff)
downloadgit-f830d45b9fdb04a5d79c25bb3a3d891d8d3b58e9.zip
git-f830d45b9fdb04a5d79c25bb3a3d891d8d3b58e9.tar.gz
git-f830d45b9fdb04a5d79c25bb3a3d891d8d3b58e9.tar.bz2
Merge commit '74359821' into js/reflog-delete
* commit '74359821': (128 commits) tests: introduce test_must_fail Fix builtin checkout crashing when given an invalid path templates/Makefile: don't depend on local umask setting Correct name of diff_flush() in API documentation Start preparing for 1.5.4.4 format-patch: remove a leftover debugging message completion: support format-patch's --cover-letter option Eliminate confusing "won't bisect on seeked tree" failure builtin-reflog.c: don't install new reflog on write failure send-email: fix In-Reply-To regression git-svn: Don't prompt for client cert password everytime. git.el: Do not display empty directories. Fix 'git cvsexportcommit -w $cvsdir ...' when used with relative $GIT_DIR Add testcase for 'git cvsexportcommit -w $cvsdir ...' with relative $GIT_DIR Prompt to continue when editing during rebase --interactive Documentation/git svn log: add a note about timezones. git-p4: Support usage of perforce client spec git-p4: git-p4 submit cleanups. git-p4: Removed git-p4 submit --direct. git-p4: Clean up git-p4 submit's log message handling. ...
Diffstat (limited to 'builtin-reset.c')
-rw-r--r--builtin-reset.c20
1 files changed, 3 insertions, 17 deletions
diff --git a/builtin-reset.c b/builtin-reset.c
index 7ee811f..af0037e 100644
--- a/builtin-reset.c
+++ b/builtin-reset.c
@@ -16,6 +16,7 @@
#include "diff.h"
#include "diffcore.h"
#include "tree.h"
+#include "branch.h"
static const char builtin_reset_usage[] =
"git-reset [--mixed | --soft | --hard] [-q] [<commit-ish>] [ [--] <paths>...]";
@@ -44,18 +45,6 @@ static inline int is_merge(void)
return !access(git_path("MERGE_HEAD"), F_OK);
}
-static int unmerged_files(void)
-{
- int i;
- read_cache();
- for (i = 0; i < active_nr; i++) {
- struct cache_entry *ce = active_cache[i];
- if (ce_stage(ce))
- return 1;
- }
- return 0;
-}
-
static int reset_index_file(const unsigned char *sha1, int is_hard_reset)
{
int i = 0;
@@ -250,7 +239,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
* at all, but requires them in a good order. Other resets reset
* the index file to the tree object we are switching to. */
if (reset_type == SOFT) {
- if (is_merge() || unmerged_files())
+ if (is_merge() || read_cache() < 0 || unmerged_cache())
die("Cannot do a soft reset in the middle of a merge.");
}
else if (reset_index_file(sha1, (reset_type == HARD)))
@@ -282,10 +271,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
break;
}
- unlink(git_path("MERGE_HEAD"));
- unlink(git_path("rr-cache/MERGE_RR"));
- unlink(git_path("MERGE_MSG"));
- unlink(git_path("SQUASH_MSG"));
+ remove_branch_state();
free(reflog_action);