Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to ignore files in kiln/mercurial using tortoise hg "that are part of the repository"

We use tortoise hg with Kiln. In my vs 2010 c# project there are some files that are part of the repository but I would like tortoise hg to ignore them when I make a commit. For eg., say in a login screen I may hard code the userid, password for testing. I dont really want this file considered during a commit. I understand .hgignore file but this really works for files that are not part of the repo. Any trick in tortoise hg to ignore files that are part of the repo ? (so they do not show up as modified (M) during a commit.) thanks

like image 855
Gullu Avatar asked Sep 08 '11 16:09

Gullu


3 Answers

I always use a combination of .hgignore and BeforeBuild (in the .csproj file) for things like this.

In one of my pet projects, I have the following setup:

App.config contains my real hardcoded user id and password for testing.
App.config.example is identical, but with fake data like "dummy_user" and "dummy_pw".

App.config is not part of the repository, and it's ignored (in .hgignore).
App.config.example is part of the repository.

Then, I have the following in the BeforeBuild target in the .csproj file of my solution:

<Target Name="BeforeBuild">
  <Copy
    Condition="!Exists('App.config')"
    SourceFiles="App.config.example" 
    DestinationFiles="App.config"/>
</Target>

All this together has the following effect:

  • the config file with the real data can never be accidentally committed to the repository, because it's ignored
  • the repository only contains the config file with the example data
  • if someone else clones the repository to his machine, he won't have the "real" config file...but if it's missing, it will be automatically created before the first build by Visual Studio / MSBuild by simply copying the .example file (and then he can just put his real login data into the newly created App.config file).
  • if an App.config with real hardcoded user data already exists, it won't be overwritten when building because the BeforeBuild event will only happen if App.config does not already exist
like image 94
Christian Specht Avatar answered Nov 09 '22 19:11

Christian Specht


The answer by Christian is the right one, but I want to mention that TortoiseHg supports what you want with their Auto Exclude List.

One problem with an exclude list is that it cannot work with merges: you must commit all files when you merge and so you'll have to do a little dance with shelve, merge, commit, and unshelve.

like image 20
Martin Geisler Avatar answered Nov 09 '22 19:11

Martin Geisler


When you do a TortoiseHG commit, there is a list of files with checkboxes by them. Deselect the files you do not want comitted.

Or, on the command line, do a commit of the form hg commit --exclude "pattern", where pattern is defined in the hg man page.

like image 40
Paul Nathan Avatar answered Nov 09 '22 19:11

Paul Nathan