comment
This commit is contained in:
parent
e9e05bfc2d
commit
0302bbff6d
1 changed files with 68 additions and 0 deletions
|
@ -0,0 +1,68 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 2"""
|
||||||
|
date="2016-10-13T17:27:36Z"
|
||||||
|
content="""
|
||||||
|
For a `git annex merge --remotes` to be useful, there would need to be a
|
||||||
|
config to disable the automatic merging of git-annex branches, which all
|
||||||
|
git-annex commands do when they notice it needs to be done.
|
||||||
|
So, this needs to be a git config and not a switch, so it can also
|
||||||
|
control the automatic git-annex branch merging.
|
||||||
|
|
||||||
|
Using remote.name.annex-ignore as the config does not make sense on second
|
||||||
|
look, because that gets set automatically when the remote is on eg
|
||||||
|
github.
|
||||||
|
|
||||||
|
Using remote.name.annex-sync=false as the config makes some sense, although
|
||||||
|
as noted above, that prevents `git annex sync` from fetching from the
|
||||||
|
remote already, so unless `git pull` is run manually, the existing config
|
||||||
|
should suffice.
|
||||||
|
|
||||||
|
To implement that, git-annex would have to parse the remote.name.fetch
|
||||||
|
config in order to tell what name a remote's git-annex branch is fetched
|
||||||
|
to. I am reluctant to do this for several reasons:
|
||||||
|
|
||||||
|
* The syntax of remote.name.fetch is only documented by example. It's
|
||||||
|
not clear what's supposed to be done if eg, the `*` appears twice
|
||||||
|
in a branch name or different numbers of times on the left and right hand
|
||||||
|
sides.
|
||||||
|
|
||||||
|
* Two remotes can have remote.name.fetch set such that the same remote
|
||||||
|
tracking branch is locally used for fetches from both remotes. So
|
||||||
|
git-annex would not know if such a branch should be synced or not.
|
||||||
|
|
||||||
|
* remote.name.fetch can be overridden when using git fetch or git pull at
|
||||||
|
the command line, so again git-annex can't know for sure what remote a
|
||||||
|
given tracking branch came from.
|
||||||
|
|
||||||
|
Four approaches that could work:
|
||||||
|
|
||||||
|
1. Add a config that is a list of remote tracking branches, and
|
||||||
|
make `git annex merge` and the automatic git-annex branch merging merge
|
||||||
|
only those tracking branches. For example,
|
||||||
|
`annex.allowmerge=refs/remotes/origin/git-annex refs/remotes/origin/master`
|
||||||
|
|
||||||
|
Doable, but it seems this would be an annoying list to maintain,
|
||||||
|
especially when new branches are made.
|
||||||
|
|
||||||
|
2. Embed some information in a branch that can be looked at to determine
|
||||||
|
that git-annex should not auto-merge this branch. Note that this would
|
||||||
|
need to be done for both the git-annex branch and the regular branch.
|
||||||
|
The latter seems particularly hard to do.
|
||||||
|
|
||||||
|
3. Configure remote.name.fetch so that the remote git-annex branch is
|
||||||
|
either not fetched, or fetched to a tracking branch that does not end
|
||||||
|
in `/git-annex`. I think this is possible to do, but due to the lack of
|
||||||
|
documentation for that config, it would take some experimentation to
|
||||||
|
find how to do it. This would prevent the automatic merging of that
|
||||||
|
branch by git-annex.
|
||||||
|
|
||||||
|
And if you make the remote master branch be
|
||||||
|
fetched to eg refs/remotes/name/master/nomerge then `git annex merge`
|
||||||
|
won't merge that into master.
|
||||||
|
|
||||||
|
4. Prevent adding a remote to a repository if that remote contains private
|
||||||
|
information that you don't want to get merged into the local repository.
|
||||||
|
This still seems like the best solution to me; if the information is
|
||||||
|
private it should not be possible to fetch it from the remote.
|
||||||
|
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue