views:

606

answers:

4

I'd like to make it so that every time I create a new repository, certain filters automatically get added to my .hgignore files by default.

For example, for C# projects, I would like these to be added:

glob:bin/*
glob:obj/*

Is this possible? How?

If it can't be automated, is it at least safe to copy the .hgignore file from one repository to another?

+1  A: 

hg add .hgignore ?

Perhaps you could clone from a repo that only had that file checked in. :)

Otherwise you'd have to write a small extension that did this in hg init somehow

Marcus Lindblom
What about copying an .hgignore file from one repository folder to another (just using the file system)? It *seems* to just be a simple text file. Any reason that wouldn't work properly?
DanM
yes, that works too. Haven't you tried it?
Marcus Lindblom
Thanks, I did try it...just wanted to make sure there were no side effects I wasn't aware of.
DanM
nope. I thought you wanted something more clever. However, xyld's idea is pretty good too.
Marcus Lindblom
Downvote and no explanation?! Hmpf.
Marcus Lindblom
DanThMan: Mercurial uses only simple and transparent text files for its user-configurable data. That holds for `.hg/hgrc`, `.hgignore`, `.hgtags`.
Martin Geisler
+6  A: 

I use ~/.hgignore and just cp that into my repo.

In my ~/.hgrc:

[ui]
ignore.other = ~/.hgignore

I just put the really obvious stuff in that one. And copy it for project specific stuff.

I don't think its quite what you're asking for as there is no automation, but it does the trick.

Windows users, see Ry4an's comment below.

xyld
I'm not familiar enough with the command line language yet to really get what you're saying. I'll have to read up, but meanwhile, is there any way to do what you're saying with TortoiseHG?
DanM
You can edit the global config file in tortoisehg too. Settings -> global -> edit file.
Marcus Lindblom
Dan, that's got nothing to do with the command line. Just create a file in your home folder named ,hgrc or optionally if you're on windows (I'm guessing you are) named mercurial.ini and put the two lines from his answer in there. Then create a file in your home folder named .hgignore and put in them your two lines from the question. TortoiseHG is a great app, but Mercurial still uses text files for configuration, and you need to create them with a text editor sometimes.
Ry4an
@Ry4an, beautiful, thank you!
DanM
+2  A: 

You could use a post-init hook to do it for you:

[hooks]
post-init.ignore-bin = echo 'glob:bin/*' >> .hgignore
post-init.ignore-obj = echo 'glob:obj/*' >> .hgignore

This form only works with the mkdir sample && cd sample && hg init style of creating a repo If you use the faster hg init sample form it will dump the new .hgignore file into the current directory.

You could write a more intelligent hook script if you prefer using hg init name.

Steve Losh
Not a bad idea. I like it for advanced users, but I don't think new users would be able to "get it".
xyld
+2  A: 

Just to clarify, it is safe to copy a .hgignore from one repos to another, it is just a plain old simple text file.

mizipzor