summaryrefslogtreecommitdiff
path: root/read-tree.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-09-10 17:46:27 -0700
committerJunio C Hamano <junkio@cox.net>2005-09-10 19:46:53 -0700
commit720d150c48fc35fca13c6dfb3c76d60e4ee83b87 (patch)
tree7b6a98c985a6bc2f5e0a66c3ea15ac0a0e081269 /read-tree.c
parent0f69be537618036c45bc07919248b88afbf7af3e (diff)
downloadgit-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.c22
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)