
Setting the Subversion ignore property
If you are using Subversion for version control, you will need to keep most of the projects in the repository; however, some files and directories should only stay locally and not be tracked.
Getting ready
Make sure that your Django project is under the Subversion version control.
How to do it…
Open your command-line tool and set your default editor as nano
, vi
, vim
or any other that you prefer, as follows:
$ export EDITOR=nano
Tip
If you don't have a preference, I would recommend using nano
, which is very intuitive and a simple text editor for the terminal.
Then, go to your project directory and type the following command:
$ svn propedit svn:ignore myproject
This will open a temporary file in the editor, where you need to put the following file and directory patterns for Subversion to ignore:
# Project files and directories local_settings.py static media tmp # Byte-compiled / optimized / DLL files __pycache__ *.py[cod] *$py.class
# C extensions *.so # PyInstaller *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov .tox .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover # Translations *.pot # Django stuff: *.log # PyBuilder target
Save the file and exit the editor. For every other Python package in your project, you will need to ignore several files and directories too. Just go to a directory and type the following command:
$ svn propedit svn:ignore .
Then, put this in the temporary file, save it, and close the editor, as follows:
# Byte-compiled / optimized / DLL files __pycache__ *.py[cod] *$py.class
# C extensions *.so # PyInstaller *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov .tox .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover # Translations *.pot # Django stuff: *.log # PyBuilder target
How it works…
In Subversion, you need to define the ignore properties for each directory of your project. Mainly, we don't want to track the Python-compiled files, for instance, *.pyc
. We also want to ignore local_settings.py
that is specific for each environment, static
that replicates collected static files from different apps, media
that contains uploaded files and changes together with the database, and tmp
that is temporarily used for file uploads.
Tip
If you keep all your settings in a conf
Python package as described in the Configuring settings for development, testing, staging, and production environments recipe, add settings.py
to the ignored files too.
See also
- The Creating and including local settings recipe
- The Creating the Git ignore file recipe