devblog
This commit is contained in:
parent
5d1b28c79c
commit
0389a22be3
1 changed files with 42 additions and 0 deletions
42
doc/devblog/day_630__dealing_with_git_changes.mdwn
Normal file
42
doc/devblog/day_630__dealing_with_git_changes.mdwn
Normal file
|
@ -0,0 +1,42 @@
|
|||
A stressful thing about maintaining git-annex is that sometimes changes to
|
||||
git break it in some way. Since git has a high development velocity, it can
|
||||
be hard to keep up with all changes and catch such problems. The git devs
|
||||
are good about backwards compatibility, but can still make mistakes. Worse
|
||||
is when there's an assumption about how people will use git, when git-annex
|
||||
lets people use it in a rather different way. I've been dealing with one of
|
||||
those today.
|
||||
|
||||
CONFLICT (file location): x/foo added in refs/remotes/origin/master
|
||||
inside a directory that was renamed in HEAD, suggesting it should
|
||||
perhaps be moved to y/foo.
|
||||
|
||||
This was a interesting new git feature when it was added back in 2.18,
|
||||
especially since git doesn't really track directories, so is here
|
||||
somewhat guessing if a directory was renamed.
|
||||
|
||||
An example of a way git-annex is used that this does not play well with
|
||||
is managing media files for consumption, where you might have an incoming
|
||||
directory, and then rename files to somewhere else once they're processed.
|
||||
If you renamed the last file in your incoming directory, and then a new
|
||||
file was later added to it in some other clone of the repository, this git
|
||||
feature could result in that new file being moved to an unexpected
|
||||
location when you `git-annex sync`.
|
||||
|
||||
Normally it wouldn't matter much if git guessed wrong like that about a
|
||||
rename, since the merge conflict forces the user to look at it.
|
||||
But, git-annex sync and the assistant automatically resolve merge
|
||||
conflicts, so the user can easily not notice this happening.
|
||||
|
||||
If you're worried that might have happened to you, look for files in your
|
||||
repository with ".variant" in the name. If there are two with the same
|
||||
base name, that's a normal merge conflict, but if there's only a single
|
||||
variant file by itself, it could have been created by this rename
|
||||
conflict scenario.
|
||||
|
||||
git-annex will now avoid this problem, by setting merge.directoryRenames=false
|
||||
when running a merge (unless you've manually configured it yourself).
|
||||
|
||||
----
|
||||
|
||||
Today's work was sponsored by Martin D
|
||||
[on Patreon](https://www.patreon.com/joeyh)
|
Loading…
Add table
Add a link
Reference in a new issue