How to prevent Mercurial commits/pushes of certain files?

You cannot stop by people from committing changes to resx files unless you have control over their desktop machines (using a pretxncommit hook), and even then it's easily bypassed. It's much more normal to put the check on the central server at time of push using a pretxnchangegroup hook, but you're right that they'll have to fix up any changesets and re-push, which is advanced usage. In either case you'd used the AclExtension to enforce the actual restriction Here are two alternate ways to go about this that might work out better for you: Clone your repository at the start of the translation process, warn developers to leave .

Resx alone for awhile, apply the work of the translators when they're done, and then merge those changes back into the main development repository with a merge command that always gives the incoming changes priority : X . Then use a simple hg log command to find all the changes in resx that just got overwritten and tell the developers to re-add them. Chide them at this time alternately Make the .

Resx files a Subrepository of the larger outer repository. Then turn off write access to that resx repository during the forbidden period. Developers will be able to commit in the outer repository but not the inner one, but clones will still get both exactly as they always did For what it's worth, everyone else handles this problem with simple merging, .

Resx is (XML) text, and it merges just fine When working with a DVCS it's not always easy to exactly mirror your svn experience, but there's usually a better option anyway.

You cannot stop by people from committing changes to . Resx files unless you have control over their desktop machines (using a pretxncommit hook), and even then it's easily bypassed. It's much more normal to put the check on the central server at time of push using a pretxnchangegroup hook, but you're right that they'll have to fix up any changesets and re-push, which is advanced usage.In either case you'd used the AclExtension to enforce the actual restriction.

Here are two alternate ways to go about this that might work out better for you: Clone your repository at the start of the translation process, warn developers to leave . Resx alone for awhile, apply the work of the translators when they're done, and then merge those changes back into the main development repository with a merge command that always gives the incoming changes priority: X . Then use a simple hg log command to find all the changes in .

Resx that just got overwritten and tell the developers to re-add them. Chide them at this time. Alternately Make the .

Resx files a Subrepository of the larger outer repository. Then turn off write access to that resx repository during the forbidden period. Developers will be able to commit in the outer repository but not the inner one, but clones will still get both exactly as they always did.

For what it's worth, everyone else handles this problem with simple merging, . Resx is (XML) text, and it merges just fine. When working with a DVCS it's not always easy to exactly mirror your svn experience, but there's usually a better option anyway.

I'll check the AclExtension. The resx files are scattered across multiple directories in the project folder, a sub repository would not work well in that context. I'm not doing all that to ease the merging process.

I have updated my question with more info on why we do that. – Sly Mar 11 at 15:33 Your explanation makes sense. You'll be able to do what you want at the push level using AclExtension.

I still think the notion that this is a very common situation and everyone else manages to address it without resorting to a blocking hook should give you pause. For example, here's how the Mercurial project itself, which relies on a great many volunteer translators whose work happens during and after the coding, handles it: mercurial.selenic. Com/wiki/TranslatingMercurial – Ry4an Mar 11 at 16:03.

You could add *. Resx to the hgignore file.

I don't like this idea because the dev won't notice that his changes to the resx are ignored. If a dev "has to" change a resx for a good reason during the translation process, we a have to know that because that work will have to be done when the translator sends the files back. – Sly Mar 11 at 15:10 1 It won't work either.

The . Hgignore file is only consulted when considering untracked files. Once a file has already been added/tracked (as these .

Resx files are) then . Hgignore has no effect at all. – Ry4an Mar 11 at 15:50.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions