[
https://issues.apache.org/jira/browse/SCM-868?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17963429#comment-17963429
]
ASF GitHub Bot commented on SCM-868:
------------------------------------
jira-importer opened a new issue, #1097:
URL: https://github.com/apache/maven-scm/issues/1097
**[Ilya
Basin](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=basinilya)**
opened
**[SCM-868](https://issues.apache.org/jira/browse/SCM-868?redirect=false)** and
commented
I'm going to add a wagon-scm test suite for git. One of the test cases is
calling the GitAddCommand command with:
```java
repo:
file:///C:/progs/maven/maven-wagon/wagon-providers/wagon-scm/target/test-classes/test-repo-git-test/
fileSet: basedir =
C:\Users\basin\AppData\Local\Temp\wagon-scm2020146470.checkout\file-list; files
= [test-resource.txt]
```
After adding the files the command internally calls "git rev-parse
--show-toplevel" which prints:
```java
C:/Users/basin/AppData/Local/Temp/wagon-scm2020146470.checkout
```
And on the next line it tries to do (pseudo code):
```java
("file:/C:/Users/basin/AppData/Local/Temp/wagon-scm1144102340.checkout/file-list/").relativize(URI.create(
"C:/Users/basin/AppData/Local/Temp/wagon-scm2020146470.checkout"))
```
This is so wrong! What were those people from SCM-709 trying to get? A
double dot ".."? The argument to the relativize() method MUST be a child, not a
parent, otherwise the argument is returned unchanged.
There are so many reasons why getting an absolute path from git is a bad
idea: Symlinks, Windows paths.
Nevertheless, there's a simple solution. The original problem was that "git
status --porcelain" printed paths relative to the top level instead of relative
to the base dir.
So we should just call
```
git rev-parse --show-prefix
```
instead of "show-toplevel" and strip this prefix from the paths printed by
"git status"
---
**Affects:** 1.9.5, 1.10.0
**Issue Links:**
- [SCM-709](https://issues.apache.org/jira/browse/SCM-709) REGRESSION: git
status doesn't work if repository root is not the working directory
**Remote Links:**
- [GitHub Pull Request #66
](https://github.com/apache/maven-scm/pull/66)
- [GitHub Pull Request #66
](https://github.com/apache/maven-scm/pull/66)
> gitexe add() does not return added files when invoked in subdir
> ---------------------------------------------------------------
>
> Key: SCM-868
> URL: https://issues.apache.org/jira/browse/SCM-868
> Project: Maven SCM (Moved to GitHub Issues)
> Issue Type: Bug
> Components: maven-scm-provider-gitexe
> Affects Versions: 1.9.5, 1.10.0
> Reporter: Ilya Basin
> Assignee: Michael Osipov
> Priority: Major
> Fix For: 1.10.0
>
>
> I'm going to add a wagon-scm test suite for git. One of the test cases is
> calling the GitAddCommand command with:
> {code:java}
> repo:
> file:///C:/progs/maven/maven-wagon/wagon-providers/wagon-scm/target/test-classes/test-repo-git-test/
> fileSet: basedir =
> C:\Users\basin\AppData\Local\Temp\wagon-scm2020146470.checkout\file-list;
> files = [test-resource.txt]{code}
> After adding the files the command internally calls "git rev-parse
> --show-toplevel" which prints:
> {code:java}
> C:/Users/basin/AppData/Local/Temp/wagon-scm2020146470.checkout{code}
> And on the next line it tries to do (pseudo code):
> {code:java}
> ("file:/C:/Users/basin/AppData/Local/Temp/wagon-scm1144102340.checkout/file-list/").relativize(URI.create(
> "C:/Users/basin/AppData/Local/Temp/wagon-scm2020146470.checkout")){code}
> This is so wrong! What were those people from SCM-709 trying to get? A double
> dot ".."? The argument to the relativize() method MUST be a child, not a
> parent, otherwise the argument is returned unchanged.
> There are so many reasons why getting an absolute path from git is a bad
> idea: Symlinks, Windows paths.
> Nevertheless, there's a simple solution. The original problem was that "git
> status --porcelain" printed paths relative to the top level instead of
> relative to the base dir.
> So we should just call
> {code}
> git rev-parse --show-prefix
> {code} instead of "show-toplevel" and strip this prefix from the paths
> printed by "git status"
--
This message was sent by Atlassian Jira
(v8.20.10#820010)