relax annex-tracking-branch to allow "/"
Allow setting remote.foo.annex-tracking-branch to a branch name that contains "/", as long as it's not a remote tracking branch.
This commit is contained in:
parent
b1c9c9d6e7
commit
9e4314de76
4 changed files with 34 additions and 5 deletions
|
@ -1,6 +1,8 @@
|
||||||
git-annex (10.20250116) UNRELEASED; urgency=medium
|
git-annex (10.20250116) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
* Support help.autocorrect settings "prompt", "never", and "immediate".
|
* Support help.autocorrect settings "prompt", "never", and "immediate".
|
||||||
|
* Allow setting remote.foo.annex-tracking-branch to a branch name
|
||||||
|
that contains "/", as long as it's not a remote tracking branch.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Mon, 20 Jan 2025 10:24:51 -0400
|
-- Joey Hess <id@joeyh.name> Mon, 20 Jan 2025 10:24:51 -0400
|
||||||
|
|
||||||
|
|
|
@ -120,15 +120,21 @@ seekExport r tree mtbcommitsha srcrs = do
|
||||||
-- branch.
|
-- branch.
|
||||||
getExportCommit :: Remote -> Git.Ref -> Annex (Maybe (RemoteTrackingBranch, Sha))
|
getExportCommit :: Remote -> Git.Ref -> Annex (Maybe (RemoteTrackingBranch, Sha))
|
||||||
getExportCommit r treeish
|
getExportCommit r treeish
|
||||||
| '/' `notElem` fromRef baseref = do
|
| '/' `notElem` fromRef baseref = go
|
||||||
let tb = mkRemoteTrackingBranch r baseref
|
| otherwise = ifM isremoteref
|
||||||
commitsha <- inRepo $ Git.Ref.sha $ Git.Ref.underBase refsheads baseref
|
( return Nothing
|
||||||
return (fmap (tb, ) commitsha)
|
, go
|
||||||
| otherwise = return Nothing
|
)
|
||||||
where
|
where
|
||||||
baseref = Ref $ S8.takeWhile (/= ':') $ fromRef' $
|
baseref = Ref $ S8.takeWhile (/= ':') $ fromRef' $
|
||||||
Git.Ref.removeBase refsheads treeish
|
Git.Ref.removeBase refsheads treeish
|
||||||
refsheads = "refs/heads"
|
refsheads = "refs/heads"
|
||||||
|
isremoteref = inRepo $ Git.Ref.exists $
|
||||||
|
Git.Ref.underBase "refs/remotes" baseref
|
||||||
|
go = do
|
||||||
|
let tb = mkRemoteTrackingBranch r baseref
|
||||||
|
commitsha <- inRepo $ Git.Ref.sha $ Git.Ref.underBase refsheads baseref
|
||||||
|
return (fmap (tb, ) commitsha)
|
||||||
|
|
||||||
-- | Changes what's exported to the remote. Does not upload any new
|
-- | Changes what's exported to the remote. Does not upload any new
|
||||||
-- files, but does delete and rename files already exported to the remote.
|
-- files, but does delete and rename files already exported to the remote.
|
||||||
|
|
|
@ -66,3 +66,5 @@ export myexport bla ok
|
||||||
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
|
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
|
||||||
|
|
||||||
git-annex is amazing, thank you! 🤩
|
git-annex is amazing, thank you! 🤩
|
||||||
|
|
||||||
|
> [[fixed|done]] --[[Joey]]
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 1"""
|
||||||
|
date="2025-01-20T15:13:05Z"
|
||||||
|
content="""
|
||||||
|
The difficulty here is that it needs to come up with the name of a
|
||||||
|
corresponding remote tracking branch to update. It could use
|
||||||
|
"myexport/synced/main" for that. But, setting `annex-tracking-branch` to
|
||||||
|
a remote ref like "origin/main" is not supported, and it would not be good
|
||||||
|
if it allowed it and used a tracking branch with a name like
|
||||||
|
"myexport/origin/main".
|
||||||
|
|
||||||
|
And well, we know that "synced/main" is not a remote ref, but "$foo/main"
|
||||||
|
generally may or may not be one.
|
||||||
|
|
||||||
|
So, I think to support this, it would have only allow using "$foo/main"
|
||||||
|
when the ref "refs/remotes/$foo/main" does not exist. I've implemented
|
||||||
|
that.
|
||||||
|
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue