Re: Git terminology: remote, add, track, stage, etc.

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Jonathan Nieder
Date: Tuesday, October 19, 2010 - 11:28 am

Ramkumar Ramachandra wrote:


Please, one patch per message in the future.



My vague unhappiness at "git reset" may have come from this.

Wouldn't it make sense to make "git reset" basically a synonym for
"git rm --cached" when in the 'branch yet to be born' case?

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
diff --git a/builtin/reset.c b/builtin/reset.c
index 0037be4..cde103f 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -236,6 +236,7 @@ static void die_if_unmerged_cache(int reset_type)
 int cmd_reset(int argc, const char **argv, const char *prefix)
 {
 	int i = 0, reset_type = NONE, update_ref_status = 0, quiet = 0;
+	int unborn_branch = 0;
 	int patch_mode = 0;
 	const char *rev = "HEAD";
 	unsigned char sha1[20], *orig = NULL, sha1_orig[20],
@@ -299,13 +300,27 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
 		}
 	}
 
-	if (get_sha1(rev, sha1))
+	if (!strcmp(rev, "HEAD")) {
+		/* We may be on a branch yet to be born. */
+		resolve_ref("HEAD", sha1, 0, NULL);
+		if (is_null_sha1(sha1)) {
+			unborn_branch = 1;
+			commit = NULL;
+			hashcpy(sha1, (const unsigned char *) EMPTY_TREE_SHA1_BIN);
+
+			/* Only accept "git reset -- <paths>" form, for now. */
+			if (i == argc || patch_mode)
+				die("Failed to resolve 'HEAD' as a valid ref.");
+		}
+	} else if (get_sha1(rev, sha1))
 		die("Failed to resolve '%s' as a valid ref.", rev);
 
-	commit = lookup_commit_reference(sha1);
-	if (!commit)
-		die("Could not parse object '%s'.", rev);
-	hashcpy(sha1, commit->object.sha1);
+	if (!unborn_branch) {
+		commit = lookup_commit_reference(sha1);
+		if (!commit)
+			die("Could not parse object '%s'.", rev);
+		hashcpy(sha1, commit->object.sha1);
+	}
 
 	if (patch_mode) {
 		if (reset_type != NONE)
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Git terminology: remote, add, track, stage, etc., Thore Husfeldt, (Mon Oct 18, 1:45 pm)
Re: Git terminology: remote, add, track, stage, etc., Jonathan Nieder, (Mon Oct 18, 2:15 pm)
Re: Git terminology: remote, add, track, stage, etc., Sverre Rabbelier, (Mon Oct 18, 2:35 pm)
Re: Git terminology: remote, add, track, stage, etc., Matthieu Moy, (Mon Oct 18, 2:41 pm)
Re: Git terminology: remote, add, track, stage, etc., Jakub Narebski, (Mon Oct 18, 2:57 pm)
Re: Git terminology: remote, add, track, stage, etc., Junio C Hamano, (Mon Oct 18, 5:03 pm)
Re: Git terminology: remote, add, track, stage, etc., Miles Bader, (Mon Oct 18, 9:49 pm)
Re: Git terminology: remote, add, track, stage, etc., Wincent Colaiuta, (Tue Oct 19, 12:19 am)
Re: Git terminology: remote, add, track, stage, etc., Miles Bader, (Tue Oct 19, 12:48 am)
Re: Git terminology: remote, add, track, stage, etc., Wincent Colaiuta, (Tue Oct 19, 1:05 am)
Re: Git terminology: remote, add, track, stage, etc., Matthijs Kooijman, (Tue Oct 19, 1:05 am)
Re: Git terminology: remote, add, track, stage, etc., Jakub Narebski, (Tue Oct 19, 1:27 am)
[PATCH v3] Porcelain scripts: Rewrite cryptic &quot;needs updat ..., Ramkumar Ramachandra, (Tue Oct 19, 7:39 am)
Re: Git terminology: remote, add, track, stage, etc., Eugene Sajine, (Tue Oct 19, 8:09 am)
Re: Git terminology: remote, add, track, stage, etc., Thore Husfeldt, (Tue Oct 19, 10:30 am)
Re: Git terminology: remote, add, track, stage, etc., Ramkumar Ramachandra, (Tue Oct 19, 10:51 am)
Re: Git terminology: remote, add, track, stage, etc., Jonathan Nieder, (Tue Oct 19, 11:28 am)
Re: Git terminology: remote, add, track, stage, etc., Sverre Rabbelier, (Tue Oct 19, 11:34 am)
Re: Git terminology: remote, add, track, stage, etc., Thore Husfeldt, (Tue Oct 19, 11:43 am)
Re: Git terminology: remote, add, track, stage, etc., Nicolas Pitre, (Tue Oct 19, 12:15 pm)
Re: Git terminology: remote, add, track, stage, etc., Junio C Hamano, (Tue Oct 19, 12:20 pm)
Re: Git terminology: remote, add, track, stage, etc., Jakub Narebski, (Tue Oct 19, 1:57 pm)
Re: Git terminology: remote, add, track, stage, etc., Drew Northup, (Tue Oct 19, 2:53 pm)
[RFC/PATCH 0/4] reset: be more flexible about &lt;rev&gt;, Jonathan Nieder, (Tue Oct 19, 3:10 pm)
Re: Git terminology: remote, add, track, stage, etc., Thore Husfeldt, (Wed Oct 20, 2:53 am)
Re: Git terminology: remote, add, track, stage, etc., Matthieu Moy, (Wed Oct 20, 4:34 am)
Re: Git terminology: remote, add, track, stage, etc., Drew Northup, (Wed Oct 20, 7:01 am)
Re: Git terminology: remote, add, track, stage, etc., Michael Haggerty, (Thu Oct 21, 1:44 am)
Re: Git terminology: remote, add, track, stage, etc., Drew Northup, (Thu Oct 21, 4:20 am)
Re: Git terminology: remote, add, track, stage, etc., Thore Husfeldt, (Thu Oct 21, 5:31 am)
Re: Git terminology: remote, add, track, stage, etc., Drew Northup, (Thu Oct 21, 5:56 am)
Re: Git terminology: remote, add, track, stage, etc., Thore Husfeldt, (Thu Oct 21, 7:06 am)
Re: Git terminology: remote, add, track, stage, etc., Drew Northup, (Thu Oct 21, 1:06 pm)
Re: Git terminology: remote, add, track, stage, etc., Miles Bader, (Thu Oct 21, 9:07 pm)
Re: Git terminology: remote, add, track, stage, etc., Drew Northup, (Fri Oct 22, 4:51 am)
Re: Git terminology: remote, add, track, stage, etc., Paul Bolle, (Fri Oct 22, 1:16 pm)
Re: Git terminology: remote, add, track, stage, etc., Eugene Sajine, (Fri Oct 22, 2:00 pm)
Re: Git terminology: remote, add, track, stage, etc., Drew Northup, (Fri Oct 22, 2:46 pm)
Re: [PATCH v3] Porcelain scripts: Rewrite cryptic &quot;needs u ..., Ramkumar Ramachandra, (Wed Oct 27, 7:55 am)
Re: Git terminology: remote, add, track, stage, etc., Ramkumar Ramachandra, (Wed Oct 27, 8:03 am)
Re: Git terminology: remote, add, track, stage, etc., Drew Northup, (Wed Oct 27, 8:16 am)
Re: Git terminology: remote, add, track, stage, etc., Matthieu Moy, (Wed Oct 27, 9:08 am)
Re: Git terminology: remote, add, track, stage, etc., Ramkumar Ramachandra, (Thu Oct 28, 8:20 am)
Re: Git terminology: remote, add, track, stage, etc., Matthieu Moy, (Thu Oct 28, 11:25 am)