Unversioning (ignoring) a file in SVN
Last updated:- make a copy, delete old file from repo, rename the copy back to original name
- delete file from repo but keep local copy
- svn propset svn:ignore
Even though 99% of the time we 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
delete the original file:
$ svn delete config.php $ svn commit
change the copied file's name back to the original:
$ mv config.php.unv config.php
commit:
$ svn commit
delete 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 svn status
:
cd to your project
$ cd your_project_name
once in your_project_name, ignore runtime child directory:
$ svn propset svn:ignore runtime .