[PATCH] allow git-update-index work on subprojects

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/10/07, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:


On Mon, 9 Apr 2007, Linus Torvalds wrote:
>
> NOTE! This series of six patches does not actually contain everything you
> need to do that - in particular, this series will not actually connect up
> the magic to make "git add" (and thus "git commit") actually create the
> gitlink entries for subprojects. That's another (quite small) patch, but I
> haven't cleaned it up enough to be submittable yet.

Here is, for your enjoyment, the last patch I used to actually test this
all. I do *not* submit it as a patch for actual inclusion - the other
patches in the series are, I think, ready to actually be merged. This one
is not.

It's broken for a few reasons:

 - it allows you to do "git add subproject" to add the subproject to the
   index (and then use "git commit" to commit it), but even something as
   simple as "git commit -a" doesn't work right, because the sequence that
   "git commit -a" uses to update the index doesn't work with the current
   state of the plumbing (ie the

        git-diff-files --name-only -z |
                git-update-index --remove -z --stdin


At least git-update-index should work.

---
builtin-update-index.c |    8 +++-----
1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/builtin-update-index.c b/builtin-update-index.c
index 47d42ed..55c9f93 100644
--- a/builtin-update-index.c
+++ b/builtin-update-index.c
@@ -94,12 +94,10 @@ static int process_file(const char *path)
				             path);
			}
		}
-		if (0 == status)
-			return error("%s: is a directory - add files inside instead",
-			             path);
-		else
+		if (status)
			return error("lstat(\"%s\"): %s", path,
				     strerror(errno));
+		/* could be a subproject */
	}

	namelen = strlen(path);
@@ -211,7 +209,7 @@ static void update_one(const char *path, const
char *prefix, int prefix_length)
		goto free_return;
	}
	if (process_file(p))
-		die("Unable to process file %s", path);
+		die("Unable to process \"%s\"", path);
	report("add '%s'", path);
 free_return:
	if (p < path || p > path + strlen(path))
--
1.5.1.147.gbaa5
From 252adc55f9a8a7ee36be1abf76d8511d6f12d4f3 Mon Sep 17 00:00:00 2001
From: Alex Riesen <ariesen@xxxxxxxxxxxxxxxx>
Date: Tue, 10 Apr 2007 15:19:30 +0200
Subject: [PATCH] allow git-update-index work on subprojects

---
 builtin-update-index.c |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/builtin-update-index.c b/builtin-update-index.c
index 47d42ed..55c9f93 100644
--- a/builtin-update-index.c
+++ b/builtin-update-index.c
@@ -94,12 +94,10 @@ static int process_file(const char *path)
 				             path);
 			}
 		}
-		if (0 == status)
-			return error("%s: is a directory - add files inside instead",
-			             path);
-		else
+		if (status)
 			return error("lstat(\"%s\"): %s", path,
 				     strerror(errno));
+		/* could be a subproject */
 	}
 
 	namelen = strlen(path);
@@ -211,7 +209,7 @@ static void update_one(const char *path, const char *prefix, int prefix_length)
 		goto free_return;
 	}
 	if (process_file(p))
-		die("Unable to process file %s", path);
+		die("Unable to process \"%s\"", path);
 	report("add '%s'", path);
  free_return:
 	if (p < path || p > path + strlen(path))
-- 
1.5.1.147.gbaa5


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]