Thread (4 messages) flat view 4 messages, 2 authors, 2016-06-15

Re: [PATCH v2] Make git_dir a path relative to work_tree in setup_work_tree()

From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:44:47

On Thu, 19 Jun 2008, Johannes Schindelin wrote:
Hi,

On Wed, 18 Jun 2008, Daniel Barkalow wrote:
quoted
diff --git a/setup.c b/setup.c
index d630e37..1643ee4 100644
--- a/setup.c
+++ b/setup.c
@@ -292,7 +292,8 @@ void setup_work_tree(void)
 	work_tree = get_git_work_tree();
 	git_dir = get_git_dir();
 	if (!is_absolute_path(git_dir))
I suspect it needs "work_tree &&" here.
I'm not clear on the semantics of !get_git_work_tree(); is a non-absolute 
path for git_dir right then?
quoted
-		set_git_dir(make_absolute_path(git_dir));
+		set_git_dir(make_relative_path(make_absolute_path(git_dir),
+					       work_tree));
 	if (!work_tree || chdir(work_tree))
 		die("This operation must be run in a work tree");
 	initialized = 1;
All in all I am pretty surprised how easy it was.  I tried yesterday, for 
half an hour, to come up with something sensible, and failed.
I was sure you'd come up with just this solution, because you'd just 
recently explained that make_absolute_path() means you can find when one 
path is in another path with a simple string compare. And, since we know 
what pwd is going to be...

	-Daniel
*This .sig left intentionally blank*
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help