aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Sjoding <joshua.sjoding@scjalliance.com>2016-02-16 10:33:33 -0800
committerJoshua Sjoding <joshua.sjoding@scjalliance.com>2016-02-16 10:33:33 -0800
commit0d4d81e597d541e9f0639f2a0fb5249bf8b5faaa (patch)
treebe07a89623f7a6b39372550d3bc68cb9c2741662
parenta9896315a1b37b66865a0eb7e94e768ef45ff3db (diff)
downloadgo-git-0d4d81e597d541e9f0639f2a0fb5249bf8b5faaa.tar.gz
File paths will now be consistent across platforms
Previously go-git used filepath.Join when walking tree structures and constructing paths, but its results are platform-dependent as it will return different results on different systems. For example, it will use backslashes as a path separator on Windows. As a result the SuiteTree.TestFiles test was failing on Windows because the returned paths didn't match what was expected. filepath.Join has been changed to path.Join, which will return consistent results for all platforms. This change makes it so that go-git will always return paths with forward-slash delimiters. Users of the library should convert the resulting file paths into platform-compatible paths when necessary.
-rw-r--r--tree.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/tree.go b/tree.go
index 339fb7f..4a964a4 100644
--- a/tree.go
+++ b/tree.go
@@ -5,7 +5,7 @@ import (
"errors"
"io"
"os"
- "path/filepath"
+ "path"
"strconv"
"strings"
@@ -138,14 +138,14 @@ func (t *Tree) walkEntries(base string, ch chan *File) {
if obj.Type() == core.TreeObject {
tree := &Tree{r: t.r}
tree.Decode(obj)
- tree.walkEntries(filepath.Join(base, entry.Name), ch)
+ tree.walkEntries(path.Join(base, entry.Name), ch)
continue
}
blob := &Blob{}
blob.Decode(obj)
- ch <- &File{Name: filepath.Join(base, entry.Name), Reader: blob.Reader(), Hash: entry.Hash}
+ ch <- &File{Name: path.Join(base, entry.Name), Reader: blob.Reader(), Hash: entry.Hash}
}
}