summaryrefslogtreecommitdiff
path: root/read-tree.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-09-11 00:46:27 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-09-11 02:46:53 (GMT)
commit720d150c48fc35fca13c6dfb3c76d60e4ee83b87 (patch)
tree7b6a98c985a6bc2f5e0a66c3ea15ac0a0e081269 /read-tree.c
parent0f69be537618036c45bc07919248b88afbf7af3e (diff)
downloadgit-720d150c48fc35fca13c6dfb3c76d60e4ee83b87.zip
git-720d150c48fc35fca13c6dfb3c76d60e4ee83b87.tar.gz
git-720d150c48fc35fca13c6dfb3c76d60e4ee83b87.tar.bz2
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 9ace5bb..4db154d 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)