Command Line svn:ignore a file

This took me far too long to do, but its because no one explained it correctly to me. I’m frustrated enough that I’m not going to go back to those other websites and see if I just overlooked something. Instead I’m going to put it right here:

You don’t svn:ignore a file.

You put an svn:ignore property on the directory to ignore that filename pattern!

That makes sense, but I didn’t immediately think of that, and no source sufficiently made that point clear enough. So, if you were struggling, please grasp that concept and take a look at the commands below (which you no doubt have seen and did not think worked) and you’ll really understand what they do.

# ---------------------------------------------------------------------
#      Ignore all the .txt files in the /trunk/Blah/ directory
# ---------------------------------------------------------------------

# Go to the directory
cd trunk/Blah/              # The directory with the files

# Start editing the properties for the current directory
svn propedit svn:ignore .   # Opens an editor (SVN_EDITOR, EDITOR)

# Add the following value with a new line, save, and exit:
*.txt

# See that things worked
svn propget svn:ignore .    # So you can see the properties
svn status --no-ignore      # You should see an 'I' next to the ignored files

# Commit
svn commit -m "New Ignores" # You must commit the new property change


# ---------------------------------------------------------------------
#     Ignore a single file secret.txt in the /trunk/ directory
# ---------------------------------------------------------------------

# Go to the directory
cd trunk/

# Add just the single file to the current directories ignore list (like above)
# Note the dot at the end of the command is important
svn propset svn:ignore secret.txt .

# See that things worked
svn propget svn:ignore .    # Notice the single file was added to the list
svn status --no-ignore      # You should see an 'I' next to the ignored files

# Commit
svn commit -m "Its secret"  # You must commit the new property change

That also means in GUI programs if you can’t seem to ignore a single file that is unversioned you should instead go to the directory that file is in and (like the above) add the filename to the svn:ignore list. Cheers.

31 Responses

1

Tims Blog » Blog Archive » NULL vs False vs 0 on October 10, 2008 at 11:34 am  #

[...] svn ignore a file [...]

2

Jan-Willem on January 20, 2009 at 12:00 pm  #

Nice clean post about this! It’s so much nicer having proper ignore patterns in your project directory

3

Sparky on February 7, 2009 at 8:20 pm  #

Great article, it’s good to find at last some comprehensive information on that subject. Really easy indeed. Thanks

4

Joseph Pecoraro on March 4, 2009 at 11:39 am  #

@Jan-Willem: @Sparky: Thanks guys. I’m glad you found this post useful.

5

Florian Cargoet on March 7, 2009 at 10:34 am  #

Thank you, I needed that !

6

Joseph Pecoraro on March 7, 2009 at 11:19 am  #

@Florian: No Problem =)

7

Darren on May 6, 2009 at 2:55 pm  #

I always forget how to use :ignore because I set it once per project and don’t think about it. This just replaced all my other bookmarks. Thanks.

8

ibar on May 9, 2009 at 2:06 pm  #

Great post. You’re right that the other HOWTOs does not explain it clearly.

9

Joseph Pecoraro on May 9, 2009 at 2:16 pm  #

@Darren: Thats good to hear!

@ibar: Its a shame that others aren’t very clear. It makes me question some of the other content in the “guides” if they can’t explain this concept clearly.

10

Life of a Plesk Admin » Ignore Files and Directories in Subversion on May 19, 2009 at 5:04 pm  #

[...] Source: http://blog.bogojoker.com/2008/07/command-line-svnignore-a-file/ [...]

11

Tom Ilsinszki on May 21, 2009 at 10:38 am  #

Thank you! Really nice, and clean website, also really clean explanation of the svn:ignore usage. I understood in a second, what I always tried to put of learning, because it seemed complicated and never seemed to work for me.

12

GareCalhoun on June 4, 2009 at 8:05 am  #

Thank you for the clear explanation. Have been wondering how to do this via command line instead of various gui’s.

13

John Bullitt on June 24, 2009 at 4:15 pm  #

Thank you — a delightfully concise and helpful post! There’s one small “gotcha” that I’d like to point out (and which I learned the hard way). This method works only if the file “secret.txt” is not already under version control. If it is under vc, then you’ll first have to svn delete it from the repository (of course, make a backup of it somewhere first), perform the sequence of steps you describe, then OS copy it back into the the trunk directory. From then on, svn happily ignores the file.

Thanks again.

14

Joseph Pecoraro on June 26, 2009 at 9:34 am  #

@John: You’re absolutely right. That has gotten me in the past before! Thanks for pointing out the solution as well.

15

Manuel on July 2, 2009 at 12:35 am  #

You rock!

I think “ignore property” is one of the worst documented and most confusing sections in all SVN documentation… and you fixed it.

Gracias!

16

Joseph Pecoraro on July 2, 2009 at 12:57 am  #

@Manuel: De nada. Yes it always frustrated me. I’m glad I’m not the only person who had this problem and it seems like I have been able to help some people out. =)

17

Subversion and Ignoring a file/directory using svn:ignore « ./cmsimike on July 20, 2009 at 2:12 am  #

[...] to do to get Subversion to ignore a file or directory. I found this helpful blog entry about Command Line svn:ignore a file which got me on the right track right away. So [...]

18

Wayne on July 23, 2009 at 1:04 am  #

Thanks man, Its 1am and this has been bugging me for half an hour. Now to get eclipse to believe it! lol

Happy coding.

19

Raina Gustafson on July 24, 2009 at 4:39 pm  #

You are a saint! Beautiful explanation!

20

kilo aka Gabor Kmetyko on October 28, 2009 at 10:09 am  #

Thanks!

Nice clean, explanatory. Just what I needed after at least 20 wasted minutes.

21

Tomek on November 8, 2009 at 8:39 am  #

hi,

thanks for this very good explanation.

There is one more issue, though. How do I un-ignore things ?


Tomek

22

Rafalmag on November 10, 2009 at 5:42 am  #

Thx for great article!! Simple examples are the best way to understand things.
It is now in my bookmarks!

Tomek:
svn propedit svn:ignore .
and remove lines that you want to un-ignore

23

isaac on November 12, 2009 at 4:01 pm  #

This was useful, thanks.

24

OmegaDelta » Blog Archive » svn ignore on November 13, 2009 at 7:16 am  #

[...] how to add svn ignores from the command line [...]

25

Mark on November 17, 2009 at 7:51 pm  #

Thanks for the post, very helpful! Not sure why this isn’t in their FAQ, especially the:
svn propedit svn:ignore .

26

Morten on November 19, 2009 at 5:07 am  #

As a lot of other have said: Thanks!

27

hajo on January 1, 2010 at 1:07 am  #

I keep forgetting this ignore-thing and remember that every time I have to struggle for a long time before it’s right. No more — this post is down-to-the-point, in a matter of seconds. Bookmarked!

28

Gerard on January 11, 2010 at 5:10 pm  #

Very clear and very brief. Bookmarked :)

Great post!

29

Brian Topping on January 13, 2010 at 2:42 pm  #

Thanks for the post, I took this to the next step. I wanted to add all files that matched a pattern (in the example here, project files created by IntelliJ IDEA). So I combined this with find and a new predicate that I just learned to come up with this:

find . -name ‘*.i[mpw][lrs]‘ -execdir svn propset svn:ignore {} . \;

‘execdir’ changes directory to that folder, then makes the path argument unqualified by a directory.

30

Command Line svn:ignore a file « Teddy Hwang on January 23, 2010 at 12:53 pm  #

[...] Command Line svn:ignore a file → I always forget how to ignore file in SVN and hence, I’m booking marking this link. [...]

31

Vishnu on February 11, 2010 at 6:45 am  #

Cool Info!!
I got your blog on the first click in google.

Add a Comment

search