This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: A few changes to .*ignore
Type: Stage: resolved
Components: Versions: Python 3.2, Python 3.3, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: eric.araujo Nosy List: eric.araujo, orsenthil, python-dev, r.david.murray
Priority: normal Keywords: needs review, patch

Created on 2011-06-03 16:42 by eric.araujo, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
ignore-patterns.diff eric.araujo, 2011-06-03 16:42
Messages (16)
msg137553 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-06-03 16:42
When compiling with --enable-shared, the libpython file is not ignored by Mercurial (or Bazaar, I guess).  Any objection to the attached patch?  I used a wildcard, but could also hard-code the full filename with a fixed shared lib number.
msg137972 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-06-09 14:35
I would also propose to remove *.rej and *.orig from the ignore files.  It’s helpful to see them in hg status in case you had a difficult merge and did not fix all files.  My usage is that I remove *.rej and *.orig after I’m done merging (or checking that the revert is okay).
msg138644 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2011-06-19 17:00
+libpython*.so*  is fine, but please don't remove the rej and orig. By convention and practice, those files are meant to be in .ignore files to prevent accidental checkins.  Usually when the conflict occurs you are notified immediately and you fix them subsequently. Being notified of pending merge by seeing the.rej files in the hg status seems remote to me.
msg138645 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011-06-19 17:06
As I've said before, I would vote to not have .rej and .orig in .hgignore.  You can always add them to your personal .hgignore, but I know of no way to tell mercurial "I *don't* want to ignore these files that are in the repo .hgignore".  If there is such a way I'll be happy with that.
msg138646 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-06-19 17:09
> By convention and practice, those files are meant to be in .ignore
> files to prevent accidental checkins.

Maybe with other tools.  Mercurial will tell you what new files are to be added in the next commit once to four times, depending on your setup, so I don’t understand how people accidentally commit .rej files (or .svn directories or Mac OS X crap).
msg138667 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2011-06-19 21:37
I strictly have not faced any problem with those rej and orig files being present in the .hgignore. I also thought keeping the .hgignore in the repo was for distribution and never knew that it can affect local views (If you remove .rej and .orig your local version, will it help?)

Yes, mercurial presents us with a list of files are that being added/committed, so we can be careful in not add those spurious leftovers. But at a time when you want to be fast with doing everything via cli options you are at a risk of adding unwanted files (unless protected by .hgignore file).

I see that .hgignore can ignore itself. So, once commited with itself to ignore, I believe people can have personal customization in there. This suggestion is with the understanding that repo/.hgignore is just to distribution and does not affect hg tracking behavior. Please correct me if I am wrong here.
msg138683 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011-06-20 02:34
I have no idea what you mean by "for distrabution" in this context.  The .hgignore in the checkout causes hg to ignore the files/patterns listed in it when any hg commands are run against that checkout.  And no I can't remove it in my "local copy", since the whole point of the file is that is is under version control in the repo.
msg138684 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2011-06-20 03:01
By "for distribution", I meant that everyone who checks out ( clones)
from hg.cpython.org repository share the same .hgignore file, instead
of each person having to create their own file. 

I got an impression from the earlier message that hg tracks (or
ignores tracking) based on .hgignore file in the server itself, which
I wanted to clarify.
msg138686 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2011-06-20 03:10
Well, since there's no central server for hg, it can't track based on the server.  Perhaps I confused you by saying that the .hgignore file was "in the repo".  (It is "in the repo" in the sense that any tracked file is in the repo, but it's effect comes from its existence in the checkout tree from which you are running the hg commands.)

So yes, the .hgignore you get when you clone is so that everybody has the same base list.  That's why we are arguing about its appropriate contents :)
msg138687 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2011-06-20 04:06
I tried to a line .hgignore inside .hgignore file, so that it can ignore itself (weird concept, but wanted to try if it works) and users can make local customization of it without any problem. This has been suggest at many places in the Internet.  I tried by completing removing the file and adding a new one with .hgignore ignoring itself. But it does'nt seem to work. 

So a possible solution seems like this: If .rej and .orig needs to be removed from .hgignore, one should just remove it from the .hgignore file and for people who do not want to be bothered by .rej/.orig files in hg st, they can create an addition ignore directive in their .hgrc
http://mercurial.selenic.com/wiki/TipsAndTricks#Ignore_files_in_local_working_copy_only
msg138999 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-06-24 22:55
Your experiments with .hgignore and your thoughts about server vs. clone .hgignore give me the impression of a misunderstanding of how it works.

To clarify: The repo .hgignore file is a repo-specific listing of patterns to ignore.  As such, it needs to be shared, i.e. put under version control.

The ignore files (the repo .hgignore and optional files configured in ~/.hgrc or $SOMECLONE/.hg/hgrc) are consulted only for some commands:

- hg status (ignored files are not considered unknown)
- hg add . (a recursive add does not consider ignored files)
- hg addremove (etc.)

This explains why putting .hgignore in the .hgignore file cannot possibly work.

If *.rej and *.orig are ignored, they don’t show up in “hg status”, and are not added with “hg add somedir”.  My point is that this behavior is not useful: it does not protect from anything (who adds directories when merging changesets?  also, who does not run status and diff before commit?  they should), and does not help us check whether we’ve properly merged all files.  I prefer to see the *.rej files in hg status output, check them and delete them.

So, can I commit?  I’m willing to update the devguide and reply to possibly angry python-dev feedback with an explanation of how to ignore those files on a per-user or per-clone basis.
msg139117 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2011-06-25 20:38
Eric, sure go ahead. As I am not affected by remains of .rej and .orig (neither have I found their usefulness (yet)), so my concerns can be stepped over. Plus, I have found a way to ignore files via patterns in .hgrc.

I already see you and RDM proposing the change, so I am okay to follow. But if you think discussion in python-dev or python-committers would be helpful it would be a good idea, because it affects people's working environment and some might have some concerns or ideas (which might be helpful).
msg139194 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2011-06-26 18:20
On Sat, Jun 25, 2011 at 08:38:04PM +0000, Senthil Kumaran wrote:
>  As I am not affected by remains of .rej and .orig (neither have I
>  found their usefulness (yet)), so my concerns can be stepped over. 

Just a side-note. I wondered why is my case so, and I realized that I
had integrated k3diff to handle any conflicts during merge so when a
conflict arises, it immediately invokes k3diff and it allowed me to
handle the conflicts giving me the contexts which are stored in .rej
files.
msg141346 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2011-07-29 12:35
New changeset 4d351135f128 by Éric Araujo in branch '3.2':
Make VCSes ignore the compiled shared library file (#12255)
http://hg.python.org/cpython/rev/4d351135f128

New changeset bdad5bc9a2ed by Éric Araujo in branch '3.2':
Stop ignoring Mercurial merge conflits files (#12255).
http://hg.python.org/cpython/rev/bdad5bc9a2ed
msg141355 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2011-07-29 12:37
New changeset 9356d2d61e9f by Éric Araujo in branch '2.7':
Make VCSes ignore the compiled shared library file (#12255)
http://hg.python.org/cpython/rev/9356d2d61e9f

New changeset 4e5127874adf by Éric Araujo in branch '2.7':
Stop ignoring Mercurial merge conflits files (#12255).
http://hg.python.org/cpython/rev/4e5127874adf
msg141365 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-07-29 12:48
This is also fixed in 3.3, but I missed a reference in the merge commit message.
History
Date User Action Args
2022-04-11 14:57:18adminsetgithub: 56464
2011-07-29 12:48:57eric.araujosetstatus: open -> closed
resolution: fixed
messages: + msg141365

stage: commit review -> resolved
2011-07-29 12:37:57python-devsetmessages: + msg141355
2011-07-29 12:35:16python-devsetnosy: + python-dev
messages: + msg141346
2011-06-26 18:20:44orsenthilsetmessages: + msg139194
2011-06-25 20:38:03orsenthilsetmessages: + msg139117
2011-06-24 22:55:13eric.araujosetmessages: + msg138999
2011-06-20 04:06:12orsenthilsetmessages: + msg138687
2011-06-20 03:10:04r.david.murraysetmessages: + msg138686
2011-06-20 03:01:48orsenthilsetmessages: + msg138684
2011-06-20 02:34:24r.david.murraysetmessages: + msg138683
2011-06-19 21:37:58orsenthilsetmessages: + msg138667
2011-06-19 17:09:46eric.araujosetmessages: + msg138646
2011-06-19 17:06:59r.david.murraysetnosy: + r.david.murray
messages: + msg138645
2011-06-19 17:00:25orsenthilsetnosy: + orsenthil
messages: + msg138644
2011-06-09 14:35:31eric.araujosetmessages: + msg137972
title: Make VCSes ignore shared libpython -> A few changes to .*ignore
2011-06-03 16:42:25eric.araujocreate