Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mercurial hg ignore does not work properly

Situation

$ cat .hgignore
.hgignore

$ hg status
M file1
M file2
M src/project.xml

I don't want to track the project.xml so I run

echo "project.xml" >> .hgignore

and the result is

$ cat .hgignore
.hgignore
project.xml

$ hg status
M .hgignore
M file1
M file2
M src/project.xml

So the .hgignore is now as modified even though it shouldn't be tracked and nothing happend with the project.xml. What does this mean?

like image 474
user219882 Avatar asked Dec 06 '22 08:12

user219882


1 Answers

You wrote:

"M src/project.xml"

which means that src/project.xml is under version control. A file already under version control cannot be ignored! The .hgignore file is for ignoring files that are untracked (status will show a "?").

You have two solutions to ignore your file:

  1. You can either "hg forget" the file, the opposite of "hg add" (i.e., telling Mercurial not to track this file anymore), or
  2. You can use the ”-X” option as a default for status/diff/commit in your .hg/hgrc configuration file, e.g.,

    [defaults]
    status = -X <file>
    diff = -X <file>
    commit = -X <file>

which will tell hg not to include this file in the use of status, diff, and commit.

like image 191
Christophe Muller Avatar answered Feb 12 '23 21:02

Christophe Muller