Skip to content

cp -p . <existing-directory> creates leading component #8555

@julian-klode

Description

@julian-klode

As of commit 4af2a84 (Aug 13):

Expected:

jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> mkdir /tmp/foo
jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> gnucp -ap . /tmp/foo
jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> ls /tmp/foo
CONTRIB.md            apt.go            copyright.go  fs.go             pkgconfdeps.go  templates/
adequate.go           apt_test.go       debconf.go    go.mod            private/        testdata/
adequate_test.go      binfmt.go         debian/       ids.go            pyfile.go       tests/
alternatives.go       binfmt_test.go    doc/          ids_test.go       strutils.go
alternatives_test.go  conffile.go       elf.go        namecollision.go  symlink.go
apt.conf.d/           conffile_test.go  exec.go       packagefile.go    tags.go

Observed

jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> rm -r /tmp/foo
jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> mkdir /tmp/foo
jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> cp -ap . /tmp/foo
jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> ls /tmp/foo
adequate-0.17.5/

OTOH, if target does not exist:

jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> rm -r /tmp/foo
jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> cp -ap . /tmp/foo
jak@jak-t14-g3 ~/P/U/S/adequate-0.17.5> ls /tmp/foo
CONTRIB.md            apt.go            copyright.go  fs.go             pkgconfdeps.go  templates/
adequate.go           apt_test.go       debconf.go    go.mod            private/        testdata/
adequate_test.go      binfmt.go         debian/       ids.go            pyfile.go       tests/
alternatives.go       binfmt_test.go    doc/          ids_test.go       strutils.go
alternatives_test.go  conffile.go       elf.go        namecollision.go  symlink.go
apt.conf.d/           conffile_test.go  exec.go       packagefile.go    tags.go

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions