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.

UPDATE: A few commenters have mentioned this (2 John’s below!) and it is worth adding here. If the file is already under version control or shows up as ‘M’ instead of ‘I’, then you’ll first have to svn delete the file from the repository (make a backup of it somewhere first), then svn ignore the file using the steps above and copy the file back into the repository.

70 Responses

1

Liviu Tudor on December 15, 2011 at 7:56 am  #

Pretty concise and to the point blog post — thanks a lot! Sorted out my svn ignore problems !

2

svn:ignore a file from the command line | ProgClub on January 13, 2012 at 9:26 am  #

[…] found Command Line svn:ignore a file while I was looking to do just that. This entry was posted in Chatter, Programming, SysAdmin and […]

3

John Doe on January 18, 2012 at 4:23 pm  #

If it still says M not I, you have to svn remove the file first and then svn ignore it.

4

Danny Bee on February 9, 2012 at 7:58 am  #

Every month or so when I need svn:ignore, I start looking this up again and again. I was aware of the pattern-thing but this time my to-ignore file was already under version control. So it was John Bullits comment here that ultimately solved my current problem (by un-versionizing the file first). Maybe you want to add this point to the main article because even after all those years since posting you -obviously- still get traffic on this topic.

5

Ahsan on June 8, 2012 at 2:06 am  #

Excellent and Succint article. It is what I was looking for.

6

Kushagra Gour on August 8, 2012 at 5:18 am  #

You are just awesome. Many thanks :)

7

Adrian Buzatu on October 3, 2012 at 10:10 am  #

Excellent post! It was annoying me so much as well, but now I found your page, applied it and it works as a charm! Thank you!

8

Gustavo on October 24, 2012 at 1:13 pm  #

Hi Joseph,
Good post, I have one question: If you commit the change by using svn commit -m “Its secret”… isn’t it changing the repository ? so others developers will have the same property in their workspaces when they update from the repository

If that’s the case, the objective of ignoring files should be only mark files to not consider them in my synchronizations, or updates.

I don’t test yet the commit, but I want to be sure first.
The commit represent a change, so Will the property be in the repository for all developer’s checkouts ?

I might be wrong, but correct me if I am.

Thanks
Gustavo

9

binto on November 1, 2012 at 3:40 am  #

nice posting u made. But a little thing was still annoying for me, is it whether put that ignoring command on workspace or repository? many thanks

10

Jean on November 5, 2012 at 3:01 am  #

Thank you!

11

Alex on November 22, 2012 at 9:26 am  #

Thanks so much! I was wondering for years how to do this right and found nowhere such a simple and good explanation.

12

Daniel on November 22, 2012 at 6:04 pm  #

All I read was the quote. Enough said. Thanks :)

13

Jeffrey on January 8, 2013 at 11:00 am  #

Thank you so much for posting this. I finally understand!!

14

Aravind on April 20, 2013 at 10:28 am  #

Nice explanation. Thanks

15

Mark on May 23, 2013 at 5:55 pm  #

Thank you! Like Daniel said last year, the quote is what did it for me.

16

jstn on September 12, 2013 at 11:50 am  #

This is the first post I found that explained this in a coherent way. Thank you!

17

sina on September 18, 2013 at 7:33 am  #

Thank you very much for this awesome text!! it’s very usefull.

18

Sam on January 7, 2014 at 11:50 pm  #

Ahhhhh *sigh of relief* thank you, I was having the same issue of trying to svn ignore a file, the same way everything else *nix like works… moving along, nothing to see here.

Nonetheless this post was muchly appreciated ;)

19

Spade on January 21, 2014 at 5:29 pm  #

Thanks. Is there a way to set it up for multiple levels of subdirectories underneath the directory for which you are editing svn properties. For example, can I ignore all *.txt under trunk that would otherwise be found using find . -name “*.txt”?

20

Dave from UptimePal on April 8, 2015 at 3:24 pm  #

I was reading about other properties in subversion on Red Bean, but I like the way you explain it better.

Thanks!

Add a Comment

search