Hi Wynand, > The version control system in Pootle does not work well with distributed > version control systems (git, Mercurial, Bazaar, Darcs).
Thanks for taking the time to analyze issues with the distributed version control systems! I did some part of the version control code, but I don't have any experience with a distributed VCS. I am glad, you step in, to fill this gap! > [...] > > Now consider what happens if we have two modified files - file_1.po and > file_2.po - in our Pootle project. > > The user attempts to update file_1.po. > > Pootle: > 1. loads file_1.po into memory, > 2. reverts file_1.po to the version that was checked out from the > version control repository, > 3. updates file_1.po from the version control repository, just a note: I think, for mercurial/git/bzr/darcs this causes an update of the whole working copy (not just a single file). > 4. BREAKS > > This won't work, because file_2.po is modified; making it impossible to > reliably pull new revisions from the version control repository. I am not sure, if I fully understand the problem. Do distributed VCS really have a problem to run an update, if the local working copy contains modified files? I tried the following here in an example mercurial repository: hg up -r 6142 [replace this with a non-current revision] echo foo >SOMEFILE [this file should have changed since above revision] hg up As far as I noticed, this did not cause any unexpected behaviour. beware: I just assume, that I know, what I am doing :) Maybe I do not understand, what exactly you mean with "breaks"? > Our solution is to keep two project directories: > 1. The Pootle project directory, > 2. The version control project directory. > > In this way, Pootle will always be able to update the version control > directory. It can also update individual files as the need arises. This would solve the potential problem, that you described above. > This solution seems wasteful, but there is a good reason: at some point, > we *might* (don't take this as a commitment) want to store the projects > in a database. Then it will be necessary to have external version > control directories to do merging. sounds good to me. > Opinions? Alternative suggestions? All in all, your approach should be the right way to allow pootle to connect files to an upstream repository without (console) intervention of the local system administrator (for the initial checkout and regular updates). It would - of course - require a good amount of development effort. But I consider this feature to be essential in the long term. However: it would be great, if you could explain the detail of the "break", that you described, so that I can fully understand the problem. thanks for your ideas, Lars ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Translate-pootle mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/translate-pootle
