git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 3/3] difftool --dir-diff: symlink all files matching the working tree

From
John Keeping <john@keeping.me.uk>
Date
Mar 14, 2013, 22:24 UTC
Message-ID
<20130314222415.GC4256@serenity.lan>
In-Reply-To
<7v620ty8lc.fsf@alter.siamese.dyndns.org>
On Thu, Mar 14, 2013 at 02:28:31PM -0700, Junio C Hamano wrote:
Show 29 quoted lines
> John Keeping <john@keeping.me.uk> writes:
> 
> > diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh
> > index 3aab6e1..70e09b6 100755
> > --- a/t/t7800-difftool.sh
> > +++ b/t/t7800-difftool.sh
> > @@ -340,6 +340,28 @@ test_expect_success PERL 'difftool --dir-diff' '
> >  	stdin_contains file <output
> >  '
> >  
> > +write_script .git/CHECK_SYMLINKS <<\EOF
> > +for f in file file2 sub/sub
> > +do
> > +	echo "$f"
> > +	readlink "$2/$f"
> > +done >actual
> > +EOF
> 
> When you later want to enhance the test to check a combination of
> difftool arguments where some paths are expected to become links and
> others are expected to become real files, wouldn't this helper
> become a bit awkward to use?  The element that expects a real file
> could be an empty line to what corresponds to the output from
> readlink, but still...
> 
> If t/ directory (or when the test is run with --root=<there>) is
> aliased with symlinks in such a way that "cd <there> && $(pwd)" does
> not match <there>, would this check with $(pwd) still work, I have
> to wonder?

It looks like t3903 uses "ls -l" for this sort of test, perhaps something like this covers these cases better:

    write_script .git/CHECK_SYMLINKS <<\EOF
    for f in file file2 sub/sub
    do
        ls -l "$2/$f" >"$f".actual
    done
    EOF
    ...
    workdir=$(git rev-parse --show-toplevel)
    grep "-> $workdir/file" file.actual
    grep "-> $workdir/file2" file2.actual
    grep "-> $workdir/sub/sub" sub/sub.actual

It looks like we already rely on that output format in t3903 so I think that is safe, but it would be nice to have a better way to say "does this link point to that file?". I can't think of a way to do that that doesn't seem far too complicated for what's required here.

Show 25 quoted lines
> > +test_expect_success PERL,SYMLINKS 'difftool --dir-diff --symlink without unstaged changes' '
> > +	cat <<EOF >expect &&
> > +file
> > +$(pwd)/file
> > +file2
> > +$(pwd)/file2
> > +sub/sub
> > +$(pwd)/sub/sub
> > +EOF
> 
> You can do this to align them nicer (note the "-" before EOF):
> 
> 	cat >expect <<-EOF &&
> 	file
>         $(pwd)/file
>         ...
>         EOF
> 
> > +	git difftool --dir-diff --symlink \
> > +		--extcmd "./.git/CHECK_SYMLINKS" branch HEAD &&
> > +	test_cmp actual expect
> > +'
> > +
>
> Thanks.
Previous: Junio C HamanoNext: Junio C Hamano
Message 36 of 50 in “difftool -d symlinks, under what conditions”
  1. Matt McClureNov 26, 2012
  2. David AguilarNov 27, 2012
  3. Matt McClureNov 27, 2012
  4. Matt McClureMar 12, 2013
  5. John KeepingMar 12, 2013
  6. David AguilarMar 12, 2013
  7. John KeepingMar 12, 2013
  8. Junio C HamanoMar 12, 2013
  9. John KeepingMar 12, 2013
  10. Junio C HamanoMar 12, 2013
  11. Matt McClureMar 12, 2013
  12. Matt McClureMar 12, 2013
  13. Junio C HamanoMar 12, 2013
  14. Matt McClureMar 12, 2013
  15. John KeepingMar 13, 2013
  16. Matt McClureMar 13, 2013
  17. David AguilarMar 13, 2013
  18. Junio C HamanoMar 13, 2013
  19. Junio C HamanoMar 13, 2013
  20. John KeepingMar 13, 2013
  21. Junio C HamanoMar 13, 2013
  22. John KeepingMar 13, 2013
  23. Junio C HamanoMar 13, 2013
  24. 0/2 difftool --dir-diff: symlink all files matching the working treeJohn Keeping, Mar 13, 2013
  25. 1/2 git-difftool(1): fix formatting of --symlink descriptionJohn Keeping, Mar 13, 2013
  26. 2/2 difftool --dir-diff: symlink all files matching the working treeJohn Keeping, Mar 13, 2013
  27. David AguilarMar 14, 2013
  28. John KeepingMar 14, 2013
  29. Junio C HamanoMar 14, 2013
  30. 0/3 difftool --dir-diff: symlink all files matching the working treeJohn Keeping, Mar 14, 2013
  31. 1/3 git-difftool(1): fix formatting of --symlink descriptionJohn Keeping, Mar 14, 2013
  32. 2/3 difftool: avoid double slashes in symlink targetsJohn Keeping, Mar 14, 2013
  33. Junio C HamanoMar 14, 2013
  34. 3/3 difftool --dir-diff: symlink all files matching the working treeJohn Keeping, Mar 14, 2013
  35. Junio C HamanoMar 14, 2013
  36. John KeepingMar 14, 2013
  37. Junio C HamanoMar 14, 2013
  38. John KeepingMar 14, 2013
  39. John KeepingMar 14, 2013
  40. Junio C HamanoMar 14, 2013
  41. 0/2 checkout-index: fix .gitattributes handling with --prefixJohn Keeping, Mar 14, 2013
  42. 1/2 t2003: modernize styleJohn Keeping, Mar 14, 2013
  43. 2/2 entry: fix filter lookupJohn Keeping, Mar 14, 2013
  44. Junio C HamanoMar 14, 2013
  45. Junio C HamanoMar 12, 2013
  46. John KeepingMar 12, 2013
  47. Matt McClureMar 12, 2013
  48. John KeepingMar 12, 2013
  49. Matt McClureMar 13, 2013
  50. John KeepingMar 13, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.