Ignore Files and Directories in Subversion
If you work with version control systems like subversion (svn) I'm sure you can relate to the problem of having test files show up when you try to commit changes. It is actually pretty simple to tell subversion ignore directories or specific files.
You can do this by editing the svn property called svn:ignore as follows:
svn propedit svn:ignore ./some_path
When you run that command svn will open your text editor, and this is where you can define patterns or specific files to ignore. If you place a * in the property file, it will ignore all files in the directory you specified ./some_path
*
The svn:ignore property as far as I know only supports the * as a wildcard. It doesn't support regular expressions, or anything fancy like that.
Having the wildcard is quite handy though, because you can do things like this:
*.class test_*
Which will ignore all your files that end in .class or any file that starts with test_.
In web application development I find it handy to ignore the contents of the directory where I store uploaded images, or files.
What do you ignore?
Tweet
Related Entries
- Moving a Subversion Repository to Another Server - February 13, 2008
- Subversion Book for $2.99 - October 28, 2006
- Using svn over ssh - January 18, 2006
Trackbacks
Comments
A good client for windows is: tortoisesvn.net
I haven't found a good client for mac, but I usually just use the command line client.
This makes it so your svn client doesn't report the files with a question mark when you run svn status, and should prevent you from adding these your test files to the repository by accident.
It is also handy for the .project files Eclipse creates.
.project .DS_Store _test (a directory I typically have in each project to use as kind of a quickie scratch pad) bin (another directory I often use to store files that will be uploaded to the system)
I also ignore build.xml and build.properties. I don't commit those because the "live" files typically contain server authentication credentials. Instead, I commit build.xml.sample and build.properties.sample without any authentication information. Sure, I have to double my work if I make any structural changes, but it a small price to pay to avoid publishing my sudo-level user information to other members of my team. :-)
Like you, I haven't found a good Mac client. I tried like hell to like SCPlugin, but just couldn't get it to do my bidding (kept getting authorization failures with no prompt to try again). I ended up sticking with Subclipse.
One question: How can these ignore patterns filter through to every other working copy of this repo? On my svn client (collabnet), changes to svn-prop.tmp are local - so each developer has to apply the settings individually (which seem to provide all the ingredients for a "Perfect Storm"). It would be great if this could run server-side. Any thoughts on how to do this?
I found it to be OK for a GUI svn client, but not as nice as tortoiseSvn for windows :-)
1. Create 2 files in the root of your working copy called ignore.txt and ignore.bat. 2. Copy all the ignore patterns for your as separate lines to ignore text i.e.
*.dll bin/*.dll
3. Copy the following to ignore.bat:
svn propset svn:ignore trunk -F ignore.txt
This assumes that all the files you want to ignore are in /trunk or below. If not, replace "trunk" with where ever you want your target to be.
4. Commit changes and run ignore.bat
5. Get all your developers to update their working copies and run ignore.bat (so everyone's on the same page).
Any thoughts?
I keep it pretty simple, stupid. I keep a copy of my config file in Subversion and check it out to my working directory. My team is responsible for keeping their local copy updated (updates happen rarely, to say the least).
The server doesn't know to explicitly ignore the files (benefit: no list of svn:ignore properties in Trac's source code browser), but clients properly understand that the repository doesn't care about them.
http://www.versionsapp.com/
I haven't used it (Windows guy here, don't shoot me) but it looks great. Tortoise is perfect for me on Win, but if I was on a Mac, I'd check out Versions.
I like your approach, and have used it in other projects:
svn propset svn:ignore . -F ignore.txt
This time however, after I have set the propset and commited, when I run svn status I get this message:
M .
That is, it says my target folder is modified. Committing . does not work =)
What did I do wrong this time? Any suggestions?
ONLY FILES WHICH ARE NOT IN THE REPOSITORY ALREADY CAN BE IGNORED! IF YOU WANT TO IGNORE SOMETHING THAT IS IN THE REPOSITORY THEN SVN DELETE IT FIRST!
SmartSVN Foundation edition is the most full featured, free SVN client I've found for OSX yet.
There's a SmartSVN Professional edition with a few more bells and whistles but for any of the unsupported tasks you can always drop back down to the command line.
to ignore a folder you do
$ svn propedit svn:ignore . add folder name in text editor window commit
The best easy-install svn server is called VisualSVN (IIRC) - it's also a Winblows gui admin tool that makes administering svn so easy a drooler could handle it. (And faster to admin too, of course, otherwise what's the point?)
Not sure why 'kind' (comment #14) is claiming its spam — it's a real client, it's excellent, and it's an answer to Pete Frietag's comment #2.
svnX is another GUI client for OS X that's free and very usable (ugly, but it works well enough for most things)
and of course some IDEs/editors have built-in svn support, like XCode and TextMate (and i think TextWrangler, a free alternative to TextMate, also has inbuilt svn support)
I like your approach. Are you creating a separate repository for your config and checking out to a working copy? Or something else?
Wow, this is a blast from the wayback machine. I've been using Git for the last couple of years, but as I recall, I had a separate config repository whose config/ directory I checked out to my .subversion directory.
Post a Comment
Recent Entries
- Writing Secure CFML cfObjective 2013 Slides
- Upgrading to Java 7 on Linux
- J2EE Sessions in CF10 Uses Secure Cookies
- Learn about ColdFusion Security at cfObjective 2013
- Session Loss and Session Fixation in ColdFusion
- FuseGuard 2.3 Released
- CKEditor Spell Checker Plugin
- Adobe Says Go Ahead and Upgrade your ColdFusion JVM


add to del.icio.us


