Well, actually, if you're going that route then extend GIT to have
support for "related" files. Essentially you should be able to add
metadata to a git tree which says: "files $SHA1-$PATH1, $SHA2-$PATH2,
[...], are related". Then there would be a "git list-related"
command with a "--mismatch" option which would list paths for which
$SHA1 doesn't correspond to $PATH1 or $SHA2 doesn't correspond to
$PATH2, etc. Some clever updating of related-status during commit/
clone/pull/etc could store information in the index about whether or
not any given file is up-to-date with respect to its co-related files.
For translations, when the English version of a document is updated
it will automatically result in a "mismatch", allowing translators to
do a simple git-diff and see what happened. Likewise, if the
Japanese document is updated without changing the relationship then
it might mean that somebody should see what changed and update the
English version as well. If you determine that the change was
irrelevant for the other language (spelling/grammar fixes, etc), then
you just update the relationship and commit that change.
It would probably be pretty trivial to implement a prototype using a
'.gitrelated' file in the root of the git tree, although better
integration with the index would really speed handling with lots of
related files; instead of linear searching just iterate over the
prepared-during-checkout "out-of-date" list.
Cheers,
Kyle Moffett
-