import to nonexistent path/branch gives unable to find base tree error

This commit is contained in:
Spencer 2025-06-20 20:54:15 +00:00 committed by admin
parent ba561159e1
commit b8b56c4651

View file

@ -0,0 +1,60 @@
### Please describe the problem.
I thought the branch in an import was arbitrary? E.g. `gx import <branch>:<subtree> -f <remote>`.
While I could understand if it is not arbitrary if it corresponds to an existing local branch, in which case the local branch is taken as a basis for which the import should be based on, I assumed if the branch name did not have a corresponding local branch that import would just base its work on an orphan. However, this fails when importing a subtree and gives `Unable to find base tree for branch <branch>`.
### What steps will reproduce the problem?
Here's an example setup in a fresh repo with no commits to master:
```
(base) ➜ repo git:(master) ✗ grv
tree
(base) ➜ repo git:(master) ✗ gx info tree
uuid: df2c15bd-0d12-4508-99c0-31da0b5e00d6
description: [tree]
trust: untrusted
remote: tree
cost: 100.0
type: directory
available: true
directory: /Users/coesite/Documents/Temp/annex-tests/import-which-gitignore/tree
encryption: none
chunking: none
importtree: yes
remote annex keys: 6
remote annex size: 472 bytes
(base) ➜ repo git:(master) ✗ la
total 16
drwxr-xr-x@ 13 coesite staff 416B Jun 20 14:28 .git
-rw-r--r-- 1 coesite staff 239B Jun 20 14:13 .gitignore
-rw-r--r-- 1 coesite staff 1.8K Jun 20 14:24 README.md
drwxr-xr-x 3 coesite staff 96B Jun 20 14:05 rel-ignore
drwxr-xr-x 2 coesite staff 64B Jun 20 14:06 root-ignore
(base) ➜ repo git:(master) ✗ gx import two:rel-ignore -f tree
git-annex: Unable to find base tree for branch two
```
I would have suspected that even though path `rel-ignore` doesn't yet exist on orphan branch `two` that this would still import `tree` to be under that path.
### What version of git-annex are you using? On what operating system?
```
git-annex version: 10.20250605
build flags: Assistant Webapp Pairing FsEvents TorrentParser MagicMime Servant Benchmark Feeds Testsuite S3 WebDAV
dependency versions: aws-0.24.4 bloomfilter-2.0.1.2 crypton-1.0.4 DAV-1.3.4 feed-1.3.2.1 ghc-9.8.4 http-client-0.7.19 persistent-sqlite-2.13.3.1 torrent-10000.1.3 uuid-1.3.16 yesod-1.6.2.1
key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL GITBUNDLE GITMANIFEST VURL X*
remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg rclone hook external compute mask
operating system: darwin aarch64
supported repository versions: 8 9 10
upgrade supported from repository versions: 0 1 2 3 4 5 6 7 8 9 10
local repository version: 10
```
OSX (brew)