]> git.ozlabs.org Git - patchwork/blobdiff - docs/INSTALL
docs: Add a note about how to run tests
[patchwork] / docs / INSTALL
index 6c4864412f7b26af026221242f1cfe476414e570..d40ddd2e7d072528728dbee47c4204a45b36e2ac 100644 (file)
@@ -9,7 +9,7 @@ You'll need the following (applications used for patchwork development are
 in brackets):
 
   * A python interpreter
-  * django >= 1.2
+  * django >= 1.5
   * A webserver (apache)
   * mod_python or flup
   * A database server (postgresql, mysql)
@@ -52,16 +52,20 @@ in brackets):
         settings, using local_settings.py (see below) to override the defaults
         in settings.py:
 
-        DATABASE_ENGINE = 'postgresql_psycopg2'
-        DATABASE_NAME = 'patchwork'
-        DATABASE_USER = 'patchwork'
-        DATABASE_PASSWORD = 'my_secret_password
-        DATABASE_HOST = 'localhost'
-        DATABASE_PORT = ''
+        DATABASES = {
+            'default': {
+                'ENGINE': 'django.db.backends.postgresql_psycopg2',
+                'HOST': 'localhost',
+                'PORT': '',
+                'USER': 'patchwork',
+                'PASSWORD': 'my_secret_password',
+                'NAME': 'patchwork',
+            },
+        }
 
     For MySQL:
         $ mysql
-        > CREATE DATABASE 'patchwork';
+        > CREATE DATABASE 'patchwork' CHARACTER SET utf8;
         > CREATE USER 'www-data'@'localhost' IDENTIFIED BY '<password>';
         > CREATE USER 'nobody'@'localhost' IDENTIFIED BY '<password>';
 
@@ -69,12 +73,21 @@ in brackets):
        settings, using local_settings.py (see below) to override the defaults
        in settings.py:
 
-       DATABASE_ENGINE = 'mysql'
-       DATABASE_NAME = 'patchwork'
-       DATABASE_USER = 'root'
-       DATABASE_PASSWORD = 'my_secret_root_password'
-       DATABSE_HOST = 'localhost'
-       DATABASE_PORT = ''
+        DATABASES = {
+            'default': {
+                'ENGINE': 'django.db.backends.mysql',
+                'HOST': 'localhost',
+                'PORT': '',
+                'USER': 'patchwork',
+                'PASSWORD': 'my_secret_password',
+                'NAME': 'patchwork',
+                'TEST_CHARSET': 'utf8',
+            },
+        }
+
+        TEST_CHARSET is used when creating tables for the test suite. Without
+        it, tests checking for the correct handling of non-ASCII characters
+        fail.
 
 2. Django setup
 
@@ -85,11 +98,11 @@ in brackets):
         lib/packages is for stuff we'll download, lib/python is to add
         to our python path. We'll symlink python modules into lib/python.
 
-        At the time of release, patchwork depends on django version 1.2 or
+        At the time of release, patchwork depends on django version 1.5 or
         later. Your distro probably provides this. If not, do a:
 
          cd lib/packages
-         git clone https://github.com/django/django.git -b stable/1.2.x
+         git clone https://github.com/django/django.git -b stable/1.5.x
          cd ../python
          ln -s ../packages/django/django ./django
 
@@ -113,12 +126,6 @@ in brackets):
           chars = string.letters + string.digits + string.punctuation
           print repr("".join([random.choice(chars) for i in range(0,50)]))
 
-        If you have patchwork installed in somewhere other than /srv/patchwork,
-        you'll also need to define:
-
-          MEDIA_ROOT
-          TEMPLATE_DIRS
-
         If you wish to enable the XML-RPC interface, add the following to
         your local_settings.py file:
 
@@ -127,7 +134,7 @@ in brackets):
         Then, get patchwork to create its tables in your configured database:
 
          cd apps/
-         PYTHONPATH=../lib/python/django ./manage.py syncdb
+         PYTHONPATH=../lib/python ./manage.py syncdb
 
         And add privileges for your mail and web users. This is only needed if
         you use the ident-based approach. If you use password-based database
@@ -216,6 +223,39 @@ fastcgi:
 
      sudo -u nobody /srv/patchwork/apps/patchwork/bin/parsemail.sh < mail
 
+7. Set up the patchwork cron script
+
+    Patchwork uses a cron script to clean up expired registrations, and
+    send notifications of patch changes (for projects with this enabled).
+
+    Something like this in your crontab should work:
+
+      # m h  dom mon dow   command
+      PYTHONPATH=apps:.
+      DJANGO_SETTINGS_MODULE=settings
+      */10 * * * * cd patchwork; python apps/patchwork/bin/patchwork-cron.py
+
+
+    - the frequency should be the same as the NOTIFICATION_DELAY_MINUTES
+    setting, which defaults to 10 minutes.
+
+8. Optional: Configure your VCS to automatically update patches
+
+    The tools directory of the patchwork distribution contains a file
+    named post-receive.hook which is an example git hook that can be
+    used to automatically update patches to the Accepted state when
+    corresponding comits are pushed via git.
+
+    To install this hook, simply copy it to the .git/hooks directory on
+    your server, name it post-receive, and make it executable.
+
+    This sample hook has support to update patches to different states
+    depending on which branch is being pushed to. See the STATE_MAP
+    setting in that file.
+
+    If you are using a system other than git, you can likely write a
+    similar hook using pwclient to update patch state. If you do write
+    one, please contribute it.
 
 Some errors: