Message ID | 20201127231916.609852-1-sandals@crustytoothpaste.net (mailing list archive) |
---|---|
Headers | show |
Series | rev-parse options for absolute or relative paths | expand |
Hi brian, On Fri, 27 Nov 2020, brian m. carlson wrote: > There are a bunch of different situations in which one would like to > have an absolute and canonical or a relative path from Git. In many of > these cases, these values are already available from git rev-parse, but > some values only come in one form or another. > > Many operating systems, such as macOS, lack a built-in realpath command > that can canonicalize paths properly, and additionally some programming > languages, like Go, currently do as well. It's therefore helpful for us > to provide a generic way to request that a path is fully canonicalized > before using it. Since users may wish for a relative path, we can > provide one of those as well. > > The primary impetus for this was Git LFS, which needs paths to be > canonicalized in the same way as Git in order to function correctly. > See https://github.com/git-lfs/git-lfs/issues/4012 for more details. Sounds good! I offered a step back that would allow us to do without `count_dir_separators()` (or `count_components()`) altogether. Otherwise, this patch series still looks good to me. Thanks, Dscho > > Changes from v2: > > * Incorporate multiple missing segment support into the strbuf_realpath > code. > * Switch some invocations to use DEFAULT_UNMODIFIED, which should not > result in a change in behavior. > * Rebase, resolving some conflicts. > > Changes from v1: > > * Add a function to handle missing trailing components when > canonicalizing paths and use it. > * Improve commit messages. > * Fix broken && chain. > * Fix situation where relative paths are not relative. > > brian m. carlson (2): > abspath: add a function to resolve paths with missing components > rev-parse: add option for absolute or relative path formatting > > Documentation/git-rev-parse.txt | 71 +++++++++++++--------- > abspath.c | 33 +++++++++- > builtin/rev-parse.c | 104 ++++++++++++++++++++++++++++---- > cache.h | 2 + > t/t1500-rev-parse.sh | 57 ++++++++++++++++- > 5 files changed, 223 insertions(+), 44 deletions(-) > >