More Tips on Subversion
In my last post I had shared a few tips on subversion addressing issues that I felt were challenging. To add to that list I would like to share a few more. One of the most common issues that I had encountered (while working with subversion and TortoiseSVN) is that the working copies stop displaying the shell overlays (icons), and sometimes a few icons may appear and the other icons might not. The Windows explorer sometimes ignores refresh notifications. The reason behind such behavior is too many application notifications that can jam TortoiseSVN. So to avoid this, the explorer sometimes ignores the notifications and that’s why the icons don’t get displayed. The solution is available in the following link:
Read up on: Why don’t the icon overlays appear?
The overlay icons appear, but not all of them!
My next tip is on how to delete a file or folder and its entire history from Subversion. Well, unlike with Git History there is no straight forward way to achieve this, as Subversion is not meant for that. You can however do this with the help of your Subversion Admin. This is how you can proceed:
svnadmin dump /path/to/repository >repo.dmp
svndumpfilter exclude /file_or_directory_to_exclude <repo.dmp >cleaned_repo.dmp
rename /path/to/repository to something else
svnadmin create /path/to/repository
svnadmin load /path/to/repository < cleaned_repo.dmp
Here is another useful tip:
Say you want to know the last changed revision or the last modified date of some particular file that you checked out from within the file itself; you can use subversion keyword substitution:
When to use SVN URL redirect –
Query: We have migrated our SVN repositories from one host “abc” to another host “xyz” , but we want all existing URLs (having http://abc.com/svn/project-A ) redirected to new host as http://xyz.com/svn/project-A without breaking developer’s bookmarks and doing svn relocate in all the working copies.
Solution: You just need to use Apache’s Rewrite-related directives in the abc.com server’s httpd.conf.
See http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html for the details of mod_rewrite’s configuration.
As a starting point, you might use something like this:
# permanently redirects all requests aimed at Subversion repositories
# to the matching relative location on xyz.com.
RedirectMatch ^/svn/(.*)$ http://xyz.com/svn/$1
Subversion 1.7+ clients will automatically redirect any working copies checked out from abc.com the next time the user performs and ‘svn update’. Older clients will print an error that instructs the user to do this relocation themselves.