Merge branch 'master' of ssh://git-annex.branchable.com

This commit is contained in:
Joey Hess 2011-12-20 12:24:23 -04:00
commit 6897460d35
3 changed files with 44 additions and 0 deletions

View file

@ -0,0 +1,21 @@
[[!comment format=mdwn
username="http://adamspiers.myopenid.com/"
nickname="Adam"
subject="comment 8"
date="2011-12-20T12:00:11Z"
content="""
Personally I'd rather have working rename detection but I agree it's not 100% ideal to be littering multiple directories like this, so perhaps you could make it optional, e.g. based on a git config setting?
Here are a few more considerations, some in defence of the approach, some against it:
* `.git-annex` is hidden; `CVS/` is not.
* Unlike `CVS/` and `.svn/`, it's only a symlink, not a directory containing other files.
* It doesn't contain any data specific to that directory and could easily be regenerated if deleted accidentally or otherwise.
* If a whole directory containing `.git-annex` was moved within the repository:
* git-annex would need to fix up these symlinks if and only if it's moved to a different depth within the tree.
* However, if the multi-level indirection approach is used, `.git-annex` in any subdirectory is *always* a symlink to `../.git-annex` so instead you would need to check that all of the new ancestors contain this symlink too, and optionally remove any no longer needed symlinks.
* In either case, git-annex already goes to the trouble of fixing symlinks, and if anything, I *think* this approach would reduce the number of symlinks which need checking (right?)
* find `$git_root/foo -follow`, `diff -r` etc. would traverse into `$git_root/.git/annex`
This last point is the only downside to this approach I can think of which gives me any noticeable cause for concern. However, people are already use to working around this from CVS and svn days, e.g. `diff -r -x .svn` so I don't think it's anywhere near bad enough to rule it out.
"""]]

View file

@ -0,0 +1,9 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 9"
date="2011-12-20T14:56:12Z"
content="""
Git can follow the rename fine if the file is committed before `git annex fix` (you can git commit -n to see this), so
making git-annex pre-commit generate a fixup commit before the staged commit would be one way. Or the other two ways I originally mentioned when writing down this minor issue. I like all those approaches better than .git-annex clutter.
"""]]

View file

@ -0,0 +1,14 @@
[[!comment format=mdwn
username="http://www.joachim-breitner.de/"
nickname="nomeata"
subject="comment 9"
date="2011-12-19T22:56:26Z"
content="""
Another option that would please the naive user without hindering the more advanced user: \"git annex init\", by default, creates a synced/master branch. \"git annex sync\" will pull from every <remote>/sync/master branch it finds, and also push to any <remote>/sync/master branch it finds, but will not create any. So by default (at least for new users), this provides simple one-step syncing.
Advanced users can disable this per-repo by just deleting the synced/master branch. Presumably the logic will be: Every repo that should not be pushed to, because it has access to some central repo, should not have a synced/master branch. Every other repo, including the (or one of the few) central repos, will have the branch.
This is not the most expressive solution, as it does not allow configuring syncing between arbitrary pairs of repos, but it feels like a good compromise between that and simplicity and transparency.
I think it's about time that I provide less talk and more code. Ill see when I find the time :-)
"""]]