diff options
author | 2016-10-13 14:02:15 -0400 | |
---|---|---|
committer | 2016-10-13 14:02:15 -0400 | |
commit | cff474c9a224f98d570f4fbb1fc2f805b30c7586 (patch) | |
tree | 55d9ba4fb5372516e5028419476b8a64d9237258 | |
parent | d1904e41142856ddf399329fc0b0e2cffa73c5f4 (diff) |
comment
-rw-r--r-- | doc/todo/annex_merge_--remotes/comment_2_be8596676823e916a56d774e0a161945._comment | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/doc/todo/annex_merge_--remotes/comment_2_be8596676823e916a56d774e0a161945._comment b/doc/todo/annex_merge_--remotes/comment_2_be8596676823e916a56d774e0a161945._comment new file mode 100644 index 000000000..38bd4e45b --- /dev/null +++ b/doc/todo/annex_merge_--remotes/comment_2_be8596676823e916a56d774e0a161945._comment @@ -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. +"""]] |