From 36ead91123ffebe35a9b4ffa9bd1c9d278b969d2 Mon Sep 17 00:00:00 2001 From: Taylor Blau Date: Mon, 31 Jul 2017 15:23:40 -0600 Subject: [PATCH] commands/track: resolve symlinks before comparing attr paths --- commands/command_track.go | 1 + test/test-track.sh | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/commands/command_track.go b/commands/command_track.go index 1e4ae447..58b6072e 100644 --- a/commands/command_track.go +++ b/commands/command_track.go @@ -56,6 +56,7 @@ func trackCommand(cmd *cobra.Command, args []string) { } wd, _ := tools.Getwd() + wd = tools.ResolveSymlinks(wd) relpath, err := filepath.Rel(config.LocalWorkingDir, wd) if err != nil { Exit("Current directory %q outside of git working directory %q.", wd, config.LocalWorkingDir) diff --git a/test/test-track.sh b/test/test-track.sh index 4dd2a24e..37270f9c 100755 --- a/test/test-track.sh +++ b/test/test-track.sh @@ -463,3 +463,28 @@ begin_test "track escaped pattern" assert_attributes_count "\\#" "filter=lfs" 1 ) end_test + +begin_test "track (symlinked repository)" +( + set -e + + reponame="tracked-symlinked-repository" + git init "$reponame" + cd "$reponame" + + touch a.dat + + pushd .. > /dev/null + dir="tracked-symlinked-repository-tmp" + + mkdir -p "$dir" + + ln -s "../$reponame" "./$dir" + + cd "$dir/$reponame" + + [ "Tracking \"a.dat\"" = "$(git lfs track "a.dat")" ] + [ "\"a.dat\" already supported" = "$(git lfs track "a.dat")" ] + popd > /dev/null +) +end_test