diff options
author | Junio C Hamano <junkio@cox.net> | 2005-09-10 17:46:27 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-09-10 19:46:53 -0700 |
commit | 720d150c48fc35fca13c6dfb3c76d60e4ee83b87 (patch) | |
tree | 7b6a98c985a6bc2f5e0a66c3ea15ac0a0e081269 /read-tree.c | |
parent | 0f69be537618036c45bc07919248b88afbf7af3e (diff) | |
download | git-720d150c48fc35fca13c6dfb3c76d60e4ee83b87.tar.gz |
Add a new merge strategy by Fredrik Kuivinen.
I really wanted to try this out, instead of asking for an adjustment
to the 'git merge' driver and waiting. For now the new strategy is
called 'fredrik' and not in the list of default strategies to be tried.
The script wants Python 2.4 so this commit also adjusts Debian and RPM
build procecure files.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'read-tree.c')
-rw-r--r-- | read-tree.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/read-tree.c b/read-tree.c index 9ace5bb0ab..4db154db2b 100644 --- a/read-tree.c +++ b/read-tree.c @@ -12,6 +12,7 @@ static int merge = 0; static int update = 0; +static int index_only = 0; static int head_idx = -1; static int merge_size = 0; @@ -306,6 +307,9 @@ static void verify_uptodate(struct cache_entry *ce) { struct stat st; + if (index_only) + return; + if (!lstat(ce->name, &st)) { unsigned changed = ce_match_stat(ce, &st); if (!changed) @@ -576,7 +580,7 @@ static int read_cache_unmerged(void) return deleted; } -static const char read_tree_usage[] = "git-read-tree (<sha> | -m [-u] <sha1> [<sha2> [<sha3>]])"; +static const char read_tree_usage[] = "git-read-tree (<sha> | -m [-u | -i] <sha1> [<sha2> [<sha3>]])"; static struct cache_file cache_file; @@ -595,12 +599,22 @@ int main(int argc, char **argv) for (i = 1; i < argc; i++) { const char *arg = argv[i]; - /* "-u" means "update", meaning that a merge will update the working directory */ + /* "-u" means "update", meaning that a merge will update + * the working tree. + */ if (!strcmp(arg, "-u")) { update = 1; continue; } + /* "-i" means "index only", meaning that a merge will + * not even look at the working tree. + */ + if (!strcmp(arg, "-i")) { + index_only = 1; + continue; + } + /* This differs from "-m" in that we'll silently ignore unmerged entries */ if (!strcmp(arg, "--reset")) { if (stage || merge) @@ -628,6 +642,10 @@ int main(int argc, char **argv) continue; } + /* using -u and -i at the same time makes no sense */ + if (1 < index_only + update) + usage(read_tree_usage); + if (get_sha1(arg, sha1) < 0) usage(read_tree_usage); if (list_tree(sha1) < 0) |