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