mbox series

[GSoC,v5,0/7] clone: dir-iterator refactoring with tests

Message ID 20190330224907.3277-1-matheus.bernardino@usp.br (mailing list archive)
Headers show
Series clone: dir-iterator refactoring with tests | expand

Message

Matheus Tavares March 30, 2019, 10:49 p.m. UTC
This patchset contains:
- a replacement of explicit recursive dir iteration at
  copy_or_link_directory for the dir-iterator API;
- some refactoring and behaviour changes at local clone, mainly to
  take care of symlinks and hidden files at .git/objects; and
- tests for this type of files

Changes since v4:
- Improved and fixed errors at messages from patches 1, 3, 5, 6 and 7.
- At first patch:
  - Simplified construction, changing a multi-line cat for an echo.
  - Removed unnecessary subshells.
  - Disabled gc.auto, just to make sure we don't get any undesired
    behaviour for this test
  - Removed the first section of a sed command ("s!/..\$!/X!;")
    that converts SHA-1s to fixed strings. No SHA-1 seemed to
    be changed by this section and neither it seemed to be used
    after the command.
- At second patch, removed linkat() usage, which is  POSIX.1-2008
  and may not be supported in all platforms git is being built.
  Now the same effect is achieved using real_pathdup() + link().

v4: https://public-inbox.org/git/20190322232237.13293-1-matheus.bernardino@usp.br/

Matheus Tavares (6):
  clone: better handle symlinked files at .git/objects/
  dir-iterator: add flags parameter to dir_iterator_begin
  clone: copy hidden paths at local clone
  clone: extract function from copy_or_link_directory
  clone: use dir-iterator to avoid explicit dir traversal
  clone: replace strcmp by fspathcmp

Ævar Arnfjörð Bjarmason (1):
  clone: test for our behavior on odd objects/* content

 builtin/clone.c            |  75 ++++++++++++---------
 dir-iterator.c             |  28 +++++++-
 dir-iterator.h             |  39 +++++++++--
 refs/files-backend.c       |   2 +-
 t/t5604-clone-reference.sh | 133 +++++++++++++++++++++++++++++++++++++
 5 files changed, 235 insertions(+), 42 deletions(-)

Comments

Thomas Gummerer March 31, 2019, 6:16 p.m. UTC | #1
On 03/30, Matheus Tavares wrote:
> This patchset contains:
> - a replacement of explicit recursive dir iteration at
>   copy_or_link_directory for the dir-iterator API;
> - some refactoring and behaviour changes at local clone, mainly to
>   take care of symlinks and hidden files at .git/objects; and
> - tests for this type of files

Thanks.  I read through the series, and only found a few minor nits.

One note on the cover letter, as I'm not sure I mentioned this before.
But as the series progresses and there are less changes in individual
patches, it is useful to include a 'range-diff', so reviewers can
quickly see what changed in the series.  This is especially useful if
they can still remember the last iteration, so they don't necessarily
have to re-read the whole series.

This can be added using the '--range-diff' option in 'git
format-patch'.

> Changes since v4:
> - Improved and fixed errors at messages from patches 1, 3, 5, 6 and 7.
> - At first patch:
>   - Simplified construction, changing a multi-line cat for an echo.
>   - Removed unnecessary subshells.
>   - Disabled gc.auto, just to make sure we don't get any undesired
>     behaviour for this test
>   - Removed the first section of a sed command ("s!/..\$!/X!;")
>     that converts SHA-1s to fixed strings. No SHA-1 seemed to
>     be changed by this section and neither it seemed to be used
>     after the command.
> - At second patch, removed linkat() usage, which is  POSIX.1-2008
>   and may not be supported in all platforms git is being built.
>   Now the same effect is achieved using real_pathdup() + link().
> 
> v4: https://public-inbox.org/git/20190322232237.13293-1-matheus.bernardino@usp.br/
> 
> Matheus Tavares (6):
>   clone: better handle symlinked files at .git/objects/
>   dir-iterator: add flags parameter to dir_iterator_begin
>   clone: copy hidden paths at local clone
>   clone: extract function from copy_or_link_directory
>   clone: use dir-iterator to avoid explicit dir traversal
>   clone: replace strcmp by fspathcmp
> 
> Ævar Arnfjörð Bjarmason (1):
>   clone: test for our behavior on odd objects/* content
> 
>  builtin/clone.c            |  75 ++++++++++++---------
>  dir-iterator.c             |  28 +++++++-
>  dir-iterator.h             |  39 +++++++++--
>  refs/files-backend.c       |   2 +-
>  t/t5604-clone-reference.sh | 133 +++++++++++++++++++++++++++++++++++++
>  5 files changed, 235 insertions(+), 42 deletions(-)
> 
> -- 
> 2.20.1
>
Matheus Tavares April 1, 2019, 1:56 p.m. UTC | #2
On Sun, Mar 31, 2019 at 3:16 PM Thomas Gummerer <t.gummerer@gmail.com> wrote:
>
> On 03/30, Matheus Tavares wrote:
> > This patchset contains:
> > - a replacement of explicit recursive dir iteration at
> >   copy_or_link_directory for the dir-iterator API;
> > - some refactoring and behaviour changes at local clone, mainly to
> >   take care of symlinks and hidden files at .git/objects; and
> > - tests for this type of files
>
> Thanks.  I read through the series, and only found a few minor nits.
>
> One note on the cover letter, as I'm not sure I mentioned this before.
> But as the series progresses and there are less changes in individual
> patches, it is useful to include a 'range-diff', so reviewers can
> quickly see what changed in the series.  This is especially useful if
> they can still remember the last iteration, so they don't necessarily
> have to re-read the whole series.
>
> This can be added using the '--range-diff' option in 'git
> format-patch'.

Thanks! I think you've said it earlier, but I forgot to use. I will
include it in v6! Thanks for remembering me about it.

> > Changes since v4:
> > - Improved and fixed errors at messages from patches 1, 3, 5, 6 and 7.
> > - At first patch:
> >   - Simplified construction, changing a multi-line cat for an echo.
> >   - Removed unnecessary subshells.
> >   - Disabled gc.auto, just to make sure we don't get any undesired
> >     behaviour for this test
> >   - Removed the first section of a sed command ("s!/..\$!/X!;")
> >     that converts SHA-1s to fixed strings. No SHA-1 seemed to
> >     be changed by this section and neither it seemed to be used
> >     after the command.
> > - At second patch, removed linkat() usage, which is  POSIX.1-2008
> >   and may not be supported in all platforms git is being built.
> >   Now the same effect is achieved using real_pathdup() + link().
> >
> > v4: https://public-inbox.org/git/20190322232237.13293-1-matheus.bernardino@usp.br/
> >
> > Matheus Tavares (6):
> >   clone: better handle symlinked files at .git/objects/
> >   dir-iterator: add flags parameter to dir_iterator_begin
> >   clone: copy hidden paths at local clone
> >   clone: extract function from copy_or_link_directory
> >   clone: use dir-iterator to avoid explicit dir traversal
> >   clone: replace strcmp by fspathcmp
> >
> > Ęvar Arnfjörš Bjarmason (1):
> >   clone: test for our behavior on odd objects/* content
> >
> >  builtin/clone.c            |  75 ++++++++++++---------
> >  dir-iterator.c             |  28 +++++++-
> >  dir-iterator.h             |  39 +++++++++--
> >  refs/files-backend.c       |   2 +-
> >  t/t5604-clone-reference.sh | 133 +++++++++++++++++++++++++++++++++++++
> >  5 files changed, 235 insertions(+), 42 deletions(-)
> >
> > --
> > 2.20.1
> >