git-commit-vandalism/builtin
Jeff King 9dc607f1c2 fast-import: fix file access when run from subdir
In cmd_fast_import(), we ignore the "prefix" argument entirely, even
though it tells us how we may have changed directory to the root of the
repository earlier in the process. Which means that if you run it from a
subdir and point to paths in the filesystem, like:

  cd subdir
  git fast-import --import-marks=foo <dump

then it will look for "foo" in the root of the repository, not the
current directory ("subdir/") which the user would have expected.

We can fix this by recording the prefix and using it as appropriate
whenever we open a file for reading or writing. I found each of these by
looking for cases where we call fopen() within fast-import.c, so this
should cover all cases. The new test triggers each one, as well as
making sure we don't accidentally apply the prefix when --relative-marks
is in use (since that option interprets some paths as relative to a
specific directory).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2023-03-28 14:11:24 -07:00
..
add.c add API: remove run_add_interactive() wrapper function 2023-02-06 15:03:34 -08:00
am.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
annotate.c
apply.c
archive.c parse-options: consistently allocate memory in fix_filename() 2023-03-06 13:14:45 -08:00
bisect.c Merge branch 'rj/bisect-already-used-branch' 2023-03-19 15:03:11 -07:00
blame.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
branch.c Merge branch 'rj/branch-copy-and-rename' into maint-2.39 2023-02-14 14:15:55 -08:00
bugreport.c
bundle.c Merge branch 'jk/bundle-use-dash-for-stdfiles' 2023-03-19 15:03:12 -07:00
cat-file.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
check-attr.c attr: add flag --source to work with tree-ish 2023-01-14 08:49:55 -08:00
check-ignore.c
check-mailmap.c ident.h: move ident-related declarations out of cache.h 2023-02-23 17:25:29 -08:00
check-ref-format.c
checkout--worker.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
checkout-index.c
checkout.c Merge branch 'jk/bundle-use-dash-for-stdfiles' 2023-03-19 15:03:12 -07:00
clean.c Merge branch 'ab/various-leak-fixes' 2023-02-22 14:55:45 -08:00
clone.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
column.c
commit-graph.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
commit-tree.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
commit.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
config.c ident.h: move ident-related declarations out of cache.h 2023-02-23 17:25:29 -08:00
count-objects.c for_each_object: mark unused callback parameters 2023-02-24 09:13:31 -08:00
credential-cache--daemon.c Merge branch 'en/header-cleanup' 2023-03-17 14:03:09 -07:00
credential-cache.c
credential-store.c
credential.c
describe.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
diagnose.c
diff-files.c
diff-index.c
diff-tree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
diff.c Merge branch 'ab/various-leak-fixes' 2022-12-14 15:55:46 +09:00
difftool.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
fast-export.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
fast-import.c fast-import: fix file access when run from subdir 2023-03-28 14:11:24 -07:00
fetch-pack.c Merge branch 'jk/fix-proto-downgrade-to-v0' 2023-03-28 10:51:52 -07:00
fetch.c Merge branch 'ew/fetch-no-write-fetch-head-fix' 2023-03-19 15:03:13 -07:00
fmt-merge-msg.c
for-each-ref.c for-each-ref: delay parsing of --sort=<atom> options 2021-10-20 14:33:07 -07:00
for-each-repo.c
fsck.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
fsmonitor--daemon.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
gc.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
get-tar-commit-id.c
grep.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
hash-object.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
help.c
hook.c hook: support a --to-stdin=<path> option 2023-02-08 12:50:03 -08:00
index-pack.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
init-db.c
interpret-trailers.c
log.c Merge branch 'jk/format-patch-ignore-noprefix' 2023-03-21 14:18:55 -07:00
ls-files.c Merge branch 'aj/ls-files-format-fix' 2023-03-21 14:18:55 -07:00
ls-remote.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
ls-tree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
mailinfo.c
mailsplit.c
merge-base.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
merge-file.c
merge-index.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
merge-ours.c
merge-recursive.c
merge-tree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
merge.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
mktag.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
mktree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
multi-pack-index.c
mv.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
name-rev.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
notes.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
pack-objects.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
pack-redundant.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
pack-refs.c
patch-id.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
prune-packed.c
prune.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
pull.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
push.c Merge branch 'jc/gpg-lazy-init' 2023-03-17 14:03:10 -07:00
range-diff.c diff: factor out add_diff_options() 2022-12-02 08:25:29 +09:00
read-tree.c Merge branch 'en/header-cleanup' 2023-03-17 14:03:09 -07:00
rebase.c Merge branch 'jk/format-patch-ignore-noprefix' 2023-03-21 14:18:55 -07:00
receive-pack.c Merge branch 'ps/receive-pack-unlock-before-die' 2023-03-21 14:18:55 -07:00
reflog.c
remote-ext.c convert trivial uses of strncmp() to skip_prefix() 2023-01-08 10:34:37 +09:00
remote-fd.c convert trivial uses of strncmp() to starts_with() 2023-01-08 10:34:35 +09:00
remote.c
repack.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
replace.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
rerere.c diff: mark unused parameters in callbacks 2022-12-13 22:16:23 +09:00
reset.c Merge branch 'jk/bundle-use-dash-for-stdfiles' 2023-03-19 15:03:12 -07:00
rev-list.c Merge branch 'ew/fetch-hiderefs' 2023-03-17 14:03:10 -07:00
rev-parse.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
revert.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
rm.c alloc.h: move ALLOC_GROW() functions from cache.h 2023-02-23 17:25:28 -08:00
send-pack.c Merge branch 'jk/fix-proto-downgrade-to-v0' 2023-03-28 10:51:52 -07:00
shortlog.c
show-branch.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
show-index.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
show-ref.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
sparse-checkout.c sparse-checkout: avoid using internal API of unpack-trees, take 2 2023-02-27 08:29:51 -08:00
stash.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
stripspace.c
submodule--helper.c Merge branch 'jk/unused-post-2.39-part2' 2023-03-17 14:03:09 -07:00
symbolic-ref.c
tag.c Merge branch 'jk/bundle-use-dash-for-stdfiles' 2023-03-19 15:03:12 -07:00
unpack-file.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
unpack-objects.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
update-index.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
update-ref.c
update-server-info.c
upload-archive.c
upload-pack.c replace-object.h: move read_replace_refs declaration from cache.h to here 2023-02-23 17:25:30 -08:00
var.c ident.h: move ident-related declarations out of cache.h 2023-02-23 17:25:29 -08:00
verify-commit.c drop pure pass-through config callbacks 2023-02-27 08:00:39 -08:00
verify-pack.c
verify-tag.c drop pure pass-through config callbacks 2023-02-27 08:00:39 -08:00
worktree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00
write-tree.c cache.h: remove dependence on hex.h; make other files include it explicitly 2023-02-23 17:25:29 -08:00