OSDN Git Service
(root)
/
git-core
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
compat/snprintf.c: handle snprintf's that always return the # chars transmitted
[git-core/git.git]
/
builtin-revert.c
diff --git
a/builtin-revert.c
b/builtin-revert.c
index
0270f9b
..
27881e9
100644
(file)
--- a/
builtin-revert.c
+++ b/
builtin-revert.c
@@
-24,12
+24,12
@@
*/
static const char * const revert_usage[] = {
*/
static const char * const revert_usage[] = {
- "git
-
revert [options] <commit-ish>",
+ "git
revert [options] <commit-ish>",
NULL
};
static const char * const cherry_pick_usage[] = {
NULL
};
static const char * const cherry_pick_usage[] = {
- "git
-
cherry-pick [options] <commit-ish>",
+ "git
cherry-pick [options] <commit-ish>",
NULL
};
NULL
};
@@
-180,7
+180,7
@@
static void set_author_ident_env(const char *message)
email++;
timestamp = strchr(email, '>');
if (!timestamp)
email++;
timestamp = strchr(email, '>');
if (!timestamp)
- die ("Could not extract author
email
from %s",
+ die ("Could not extract author
time
from %s",
sha1_to_hex(commit->object.sha1));
*timestamp = '\0';
for (timestamp++; *timestamp && isspace(*timestamp);
sha1_to_hex(commit->object.sha1));
*timestamp = '\0';
for (timestamp++; *timestamp && isspace(*timestamp);
@@
-206,6
+206,7
@@
static int merge_recursive(const char *base_sha1,
{
char buffer[256];
const char *argv[6];
{
char buffer[256];
const char *argv[6];
+ int i = 0;
sprintf(buffer, "GITHEAD_%s", head_sha1);
setenv(buffer, head_name, 1);
sprintf(buffer, "GITHEAD_%s", head_sha1);
setenv(buffer, head_name, 1);
@@
-218,12
+219,13
@@
static int merge_recursive(const char *base_sha1,
* and $prev on top of us (when reverting), or the change between
* $prev and $commit on top of us (when cherry-picking or replaying).
*/
* and $prev on top of us (when reverting), or the change between
* $prev and $commit on top of us (when cherry-picking or replaying).
*/
- argv[0] = "merge-recursive";
- argv[1] = base_sha1;
- argv[2] = "--";
- argv[3] = head_sha1;
- argv[4] = next_sha1;
- argv[5] = NULL;
+ argv[i++] = "merge-recursive";
+ if (base_sha1)
+ argv[i++] = base_sha1;
+ argv[i++] = "--";
+ argv[i++] = head_sha1;
+ argv[i++] = next_sha1;
+ argv[i++] = NULL;
return run_command_v_opt(argv, RUN_COMMAND_NO_STDIN | RUN_GIT_CMD);
}
return run_command_v_opt(argv, RUN_COMMAND_NO_STDIN | RUN_GIT_CMD);
}
@@
-297,9
+299,12
@@
static int revert_or_cherry_pick(int argc, const char **argv)
discard_cache();
}
discard_cache();
}
- if (!commit->parents)
- die ("Cannot %s a root commit", me);
- if (commit->parents->next) {
+ if (!commit->parents) {
+ if (action == REVERT)
+ die ("Cannot revert a root commit");
+ parent = NULL;
+ }
+ else if (commit->parents->next) {
/* Reverting or cherry-picking a merge commit */
int cnt;
struct commit_list *p;
/* Reverting or cherry-picking a merge commit */
int cnt;
struct commit_list *p;
@@
-368,7
+373,8
@@
static int revert_or_cherry_pick(int argc, const char **argv)
}
}
}
}
- if (merge_recursive(sha1_to_hex(base->object.sha1),
+ if (merge_recursive(base == NULL ?
+ NULL : sha1_to_hex(base->object.sha1),
sha1_to_hex(head), "HEAD",
sha1_to_hex(next->object.sha1), oneline) ||
write_cache_as_tree(head, 0, NULL)) {
sha1_to_hex(head), "HEAD",
sha1_to_hex(next->object.sha1), oneline) ||
write_cache_as_tree(head, 0, NULL)) {