From: Frank Lichtenheld <hidden> Date: 2016-06-15 22:46:43
From: Frank Lichtenheld <redacted>
Otherwise git will use the current directory as work tree which will
lead to unexpected results if we operate in sub directory of the
work tree.
Signed-off-by: Frank Lichtenheld <redacted>
---
perl/Git.pm | 2 ++
t/t9700-perl-git.sh | 4 ++++
t/t9700/test.pl | 13 +++++++++++++
3 files changed, 19 insertions(+), 0 deletions(-)
No comments and doesn't seem to have been applied, so resent unchanged.
@@ -98,3 +98,16 @@ TODO: {todo_skip'config after wc_chdir',1;is($r->config("color.string"),"value","config after wc_chdir");}++#Objectgenerationinsubdirectory+chdir("directory2");+my$r2=Git->repository();+is($r2->repo_path,$abs_repo_dir."/.git","repo_path (2)");+is($r2->wc_path,$abs_repo_dir."/","wc_path (2)");+is($r2->wc_subdir,"directory2/","wc_subdir initial (2)");++#commandsinsubdirectory+my$last_commit=$r2->command_oneline(qw(rev-parse--verifyHEAD));+like($last_commit,qr/^[0-9a-fA-F]{40}$/,'rev-parse returned hash');+my$dir_commit=$r2->command_oneline('log','-n1','--pretty=format:%H','.');+isnt($last_commit,$dir_commit,'log . does not show last commit');
From: Frank Lichtenheld <hidden> Date: 2016-06-15 22:46:43
From: Frank Lichtenheld <redacted>
So far we only set it to absolute paths in some cases which lead
to problems like wc_chdir not working.
Signed-off-by: Frank Lichtenheld <redacted>
---
perl/Git.pm | 2 +-
t/t9700/test.pl | 10 ++--------
2 files changed, 3 insertions(+), 9 deletions(-)
Resent unchanged. There was one comment which I've reponded too and
argued that it didn't apply and there was no further objections.
@@ -185,7 +185,7 @@ sub repository {if($dir){$dir=~m#^/#or$dir=$opts{Directory}.'/'.$dir;-$opts{Repository}=$dir;+$opts{Repository}=abs_path($dir);# If --git-dir went ok, this shouldn't die either.my$prefix=$search->command_oneline('rev-parse','--show-prefix');
@@ -86,18 +86,12 @@ close TEMPFILE;unlink$tmpfile;#paths-is($r->repo_path,"./.git","repo_path");+is($r->repo_path,$abs_repo_dir."/.git","repo_path");is($r->wc_path,$abs_repo_dir."/","wc_path");is($r->wc_subdir,"","wc_subdir initial");$r->wc_chdir("directory1");is($r->wc_subdir,"directory1","wc_subdir after wc_chdir");-TODO:{-local$TODO="commands do not work after wc_chdir";-#Failureoutputisactiveeveninnon-verbosemodeandthus-#annoying.Henceweskipthesetestsaslongastheyfail.-todo_skip'config after wc_chdir',1;-is($r->config("color.string"),"value","config after wc_chdir");-}+is($r->config("test.string"),"value","config after wc_chdir");#Objectgenerationinsubdirectorychdir("directory2");
From: Petr Baudis <hidden> Date: 2016-06-15 22:46:43
On Thu, May 07, 2009 at 03:41:27PM +0200, Frank Lichtenheld wrote:
quoted hunk
From: Frank Lichtenheld <redacted>
Otherwise git will use the current directory as work tree which will
lead to unexpected results if we operate in sub directory of the
work tree.
Signed-off-by: Frank Lichtenheld <redacted>
---
perl/Git.pm | 2 ++
t/t9700-perl-git.sh | 4 ++++
t/t9700/test.pl | 13 +++++++++++++
3 files changed, 19 insertions(+), 0 deletions(-)
No comments and doesn't seem to have been applied, so resent unchanged.
@@ -1280,6 +1280,8 @@ sub _cmd_exec {my($self,@args)=@_;if($self){$self->repo_path()and$ENV{'GIT_DIR'}=$self->repo_path();+$self->repo_path()and$self->wc_path()+and$ENV{'GIT_WORK_TREE'}=$self->wc_path();$self->wc_path()andchdir($self->wc_path());$self->wc_subdir()andchdir($self->wc_subdir());}
This looks obviously correct?
You could even skip the first chdir and use $self->wc_path() .
$self->wc_subdir() in the second one to save a syscall, I guess. ;-)
I've really forgot most of the code already so it's not worth much, but
Acked-by: Petr Baudis <redacted>
From: Johannes Sixt <hidden> Date: 2016-06-15 22:46:49
Frank Lichtenheld schrieb:
quoted hunk
From: Frank Lichtenheld <redacted>
So far we only set it to absolute paths in some cases which lead
to problems like wc_chdir not working.
Signed-off-by: Frank Lichtenheld <redacted>
---
perl/Git.pm | 2 +-
t/t9700/test.pl | 10 ++--------
2 files changed, 3 insertions(+), 9 deletions(-)
Resent unchanged. There was one comment which I've reponded too and
argued that it didn't apply and there was no further objections.
@@ -185,7 +185,7 @@ sub repository {if($dir){$dir=~m#^/#or$dir=$opts{Directory}.'/'.$dir;-$opts{Repository}=$dir;+$opts{Repository}=abs_path($dir);
Unfortunately, this change breaks MinGW git because the absolute path that
this produces is MSYS-style /c/path/to/repo, but git does not understand
this; it should be c:/path/to/repo. This value is ultimately assigned to
GIT_DIR, but the path name mangling that usually happens when an MSYS
program (like perl) spawns a non-MSYS program (like git) does not happen.
Your commit message is quite vague about the problems that you have seen.
I vote to revert this change.
-- Hannes
From: Johannes Sixt <hidden> Date: 2016-06-15 22:46:51
Frank Lichtenheld schrieb:
On Mon, May 25, 2009 at 09:33:20AM +0200, Johannes Sixt wrote:
quoted
Frank Lichtenheld schrieb:
quoted
--- a/perl/Git.pm+++ b/perl/Git.pm
@@ -185,7 +185,7 @@ sub repository {if($dir){$dir=~m#^/#or$dir=$opts{Directory}.'/'.$dir;-$opts{Repository}=$dir;+$opts{Repository}=abs_path($dir);
Unfortunately, this change breaks MinGW git because the absolute path that
this produces is MSYS-style /c/path/to/repo, but git does not understand
this; it should be c:/path/to/repo. This value is ultimately assigned to
GIT_DIR, but the path name mangling that usually happens when an MSYS
program (like perl) spawns a non-MSYS program (like git) does not happen.
Your commit message is quite vague about the problems that you have seen.
I vote to revert this change.
Note that abs_path is already used twice in the same function. Why are those
usages not problematic? I would be happy to work with you on finding a patch
that doesn't break, but I have to admit that I have no idea of the
Windows<->Perl<->git interactions.
The result of abs_path() three lines below the cited context is never
passed to git; only its trailing part is ever used. This does not seem to
be problematic on Windows, according to the test suite.
The other use if abs_path() is about bare repositories and that is
certainly problematic, but nobody uses the tools written in perl in a bare
repository on Windows, obviously, otherwise we would have heard complaints. ;)
As for the problems, a part of the public API of the module simply doesn't work
(i.e. wc_chdir) which I fixed. If we can't fix it we should at least not pretend
that it works.
Since you keep repeating "does not work", without any specifics, I can't
help (and I'm not going to find out myself what "does not work").
-- Hannes
From: Frank Lichtenheld <hidden> Date: 2016-06-15 22:46:51
On Mon, May 25, 2009 at 09:33:20AM +0200, Johannes Sixt wrote:
Frank Lichtenheld schrieb:
quoted
From: Frank Lichtenheld <redacted>
So far we only set it to absolute paths in some cases which lead
to problems like wc_chdir not working.
Signed-off-by: Frank Lichtenheld <redacted>
---
perl/Git.pm | 2 +-
t/t9700/test.pl | 10 ++--------
2 files changed, 3 insertions(+), 9 deletions(-)
Resent unchanged. There was one comment which I've reponded too and
argued that it didn't apply and there was no further objections.
@@ -185,7 +185,7 @@ sub repository {if($dir){$dir=~m#^/#or$dir=$opts{Directory}.'/'.$dir;-$opts{Repository}=$dir;+$opts{Repository}=abs_path($dir);
Unfortunately, this change breaks MinGW git because the absolute path that
this produces is MSYS-style /c/path/to/repo, but git does not understand
this; it should be c:/path/to/repo. This value is ultimately assigned to
GIT_DIR, but the path name mangling that usually happens when an MSYS
program (like perl) spawns a non-MSYS program (like git) does not happen.
Your commit message is quite vague about the problems that you have seen.
I vote to revert this change.
Note that abs_path is already used twice in the same function. Why are those
usages not problematic? I would be happy to work with you on finding a patch
that doesn't break, but I have to admit that I have no idea of the
Windows<->Perl<->git interactions.
As for the problems, a part of the public API of the module simply doesn't work
(i.e. wc_chdir) which I fixed. If we can't fix it we should at least not pretend
that it works.
Gruesse,
--
Frank Lichtenheld [off-list ref]
www: http://www.djpig.de/
From: Frank Lichtenheld <hidden> Date: 2016-06-15 22:46:51
On Wed, May 27, 2009 at 01:16:16PM +0200, Johannes Sixt wrote:
Frank Lichtenheld schrieb:
quoted
As for the problems, a part of the public API of the module simply doesn't work
(i.e. wc_chdir) which I fixed. If we can't fix it we should at least not pretend
that it works.
Since you keep repeating "does not work", without any specifics, I can't
help (and I'm not going to find out myself what "does not work").
Oh, sorry, I thought that the core problem would be obvious from the related test
suite changes. I can elaborate on that later this evening when I'm not at work.
Gruesse,
--
Frank Lichtenheld [off-list ref]
www: http://www.djpig.de/