Introduction
Subversion (SVN) is a widely used version control system that allows teams to manage changes to source code and other files. A crucial feature of any version control system is its ability to ignore certain files or directories, keeping the repository clean and focused on essential files only. This tutorial will guide you through various methods of managing ignored files in Subversion, ensuring that unwanted files do not clutter your project.
Ignoring Files in Subversion
Ignoring files involves specifying patterns for files or directories that should be excluded from version control operations. In SVN, this is achieved using ignore properties and runtime configurations. Let’s explore the main techniques:
1. Using svn:ignore Property
The svn:ignore property allows you to specify file patterns to be ignored in a specific directory. This property is stored within the repository, ensuring that all collaborators have consistent ignore settings.
How to Set svn:ignore
To set or modify the svn:ignore property for a directory:
svn propset svn:ignore "pattern" .
- Replace
"pattern"with the file pattern you wish to ignore. Patterns can include wildcards, like*.logortemp/.
Applying svn:ignore Recursively
By default, svn:ignore is non-recursive and applies only to immediate children of the directory where it’s set. To apply patterns recursively:
svn propset svn:ignore "pattern" . --recursive
This command sets the ignore property on all subdirectories.
2. Using svn:global-ignores Property
SVN 1.8 introduced svn:global-ignores, a property that supports inherited patterns. This means once set, it applies to all descendant directories automatically.
How to Set svn:global-ignores
To apply global ignore rules:
svn propset svn:global-ignores "pattern" .
Unlike svn:ignore, this property doesn’t require the --recursive flag for inheritance.
3. Runtime Configuration
Subversion also allows you to configure ignored patterns globally on your client machine using a runtime configuration file:
Configuring Global Ignores
Edit your Subversion config file located at:
- Windows (registry-based):
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores - Windows (file-based):
C:\Users\<YourUsername>\AppData\Roaming\Subversion\config - Linux/Unix:
~/.subversion/config
Add patterns to the global-ignores section. This setup is client-side only and applies to all repositories checked out on your system.
4. Using Command-Line Tools for Ignoring Files
You can use command-line tools to list, set, or manage ignored files effectively:
Listing Unversioned and Ignored Files
To see unversioned files that match ignore patterns:
svn status --no-ignore | grep "^I"
Creating Ignore Lists Dynamically
Generate a list of files not under version control and selectively add them to the ignore property:
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Edit ignoring.txt to specify which files you want to ignore, then apply it using:
svn propset svn:ignore -F ignoring.txt .
Best Practices
-
Consistent Ignore Patterns: Use
.gitignore-likefiles for setting multiple patterns easily. -
Commit Ignore Changes: Always commit changes to ignore properties so that all team members inherit them.
-
Verify Ignored Files: Regularly check ignored files using
svn status --no-ignoreto ensure your ignore rules are effective.
Conclusion
Effectively managing ignored files in Subversion enhances repository cleanliness and ensures efficient version control. By leveraging the various methods outlined in this tutorial, you can tailor ignore settings to fit your project’s needs, whether through properties like svn:ignore, runtime configurations, or command-line tools.