I'm going to add a wagon-scm test suite for git. One of the test cases is calling the GitAddCommand command with:
After adding the files the command internally calls "git rev-parse --show-toplevel" which prints:
And on the next line it tries to do (pseudo 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
instead of "show-toplevel" and strip this prefix from the paths printed by "git status"