Even though we 99% of the time want to keep the development version and the production version in synch, every now and then we want to have, for example, a config file that shouldn't be synched when we update the production version with new code.
Say you have a file name
config.php which has specific configurations depending on whether it's on you development server or the production server. If you don't unversion or ignore it, then every time you update your production server, the production-specific file version would get overwritten.
make a copy, delete old file from repo, rename the copy back to original name
cd into your development working directory and make a copy of the file:
$ cp config.php config.php.unv
then delete the original file:
$ svn delete config.php $ svn commit
now change the copied file's name back to the original:
$ mv config.php.unv config.php
$ svn commit
delete a file from repo but keep local copy
in the development version, delete the file from the repo but keep it in the local(working) directory:
$ svn rm --keep-local config.php $ svn commit
then log into your production version and create a copy of the config file:
$ cp config.php config.php.tmp
then update the working directory (
config.php will get deleted)
$ svn update
and now re-name the copy back to the original name
$ mv config.php.tmp config.php
done. Now SVN will behave as if it never knew the file. In other words, you can modify it and then update and/or commit your project and local changes to this file won't get overwritten.
svn propset svn:ignore
this is useful if you want to keep files that you don't want versioned (like those you have unversioned using the above approaches) from appearing in
svn status output.
Suppose you have a directory called your_project_name/runtime which you don't want versioned, but it shows up everytime you do
cd to your project
$ cd your_project_name
once in your_project_name, ignore runtime child directory:
$ svn propset svn:ignore runtime .