Vendor Imports

Ulrich Spörlein uqs at freebsd.org
Wed Dec 16 21:31:53 UTC 2020


On Wed, 2020-12-16 at 12:49:02 -0700, Warner Losh wrote:
>On Wed, Dec 16, 2020 at 9:09 AM Cy Schubert <Cy.Schubert at cschubert.com>
>wrote:
>
>> In message
>> <CANCZdfpbZeiPamfX+z-85WWAo7TA5P36T_qEUCQ-VoQdjh+yOw at mail.gmail.c
>> om>
>> , Warner Losh writes:
>> > --0000000000002f35bf05b6945830
>> > Content-Type: text/plain; charset="UTF-8"
>> >
>> > On Wed, Dec 16, 2020 at 1:12 AM Cy Schubert <Cy.Schubert at cschubert.com>
>> > wrote:
>> >
>> > > Can we extrapolate that multilevel vendor trees, those with
>> > > subdirectories,
>> > > would need a cp -R or rsync?
>> > >
>> >
>> > It would.
>> >
>> >
>> > > The example shown says:
>> > >
>> > > % cd ../mtree
>> > > % cp ~/git/NetBSD/usr.sbin/mtree/* .
>> > > %
>> > >
>> > > cp -R would be appropriate for more complex software like openssl,
>> > > unbound,
>> > > and the like. Is this correct?
>> > >
>> >
>> > Yes. You're right. rsync with delete has been suggested, but I've not had
>> > time to update the example.
>>
>> Except that rsync duplicates hard link relationships whereas cp -R copies
>> them as if they are independent files in their own right. An rsync without
>> the -a or -H options should be suggested. Or does git treat hard links to
>> the same file as different files? (Meaning I'm talking through my hat?)
>>
>
>I'm unsure. An experiment is in order.

Git only knows soft links, hard links are handled implicitly, as they 
have the same content hash, so the blob is the same and you end up with 
2 tree entries pointing to the same blob. (To my knowledge a checkout 
will *not* hard link files, think about supporting Windows and all that, 
even though NTFS supposedly has links too?)

To handle deletes, you either need to:
- rm -rf * && cp -R ~/some/src/ .
- rsync -a --del ~/some/src/ .

or anything in between. Just make sure that file deletions are also 
being done :)

Cheers
Uli


More information about the freebsd-git mailing list