summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
blob: 4070fa97d59683ed6b45e42279337526272ccf43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# Change Log

All notable changes to this project will be documented in this file. Please
refer to the release notes for more detailed information, e.g. how to upgrade.

This project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]

This release added support for a REST API, cover letter parsing, and the latest
versions of both Django and Python.

### Added

- REST API support (Django >= 1.8 only)
- Cover letter support
- Series support
- Django debug toolbar support for developers
- Django 1.9 and 1.10 support
- Python 3.5 support
- Docker support for developers
- Sample deployment documentation
- User documentation

### Changed

- The `parsemail.py` and `parsearchive.py` scripts have been replaced by the
  `parsemail` and `parsearchive` management commands
- Significant rework of tests
- A user's name will now be updated on each email received from them

### Fixed

- Numerous typos and other issues in both documentation and code
- Various UI and performance improvements
- Checks are now displayed with their associated owner, thus preventing
  spoofing
- `user at domain`-style email address, commonly found in Mailman archives, are
  now handled correctly
- Unicode characters transmitted over the XML-RPC API are now handled correctly
  under Python 3

### Removed

- `parser.py` can no longer be exected as a script

### Deprecated

- Django 1.7 support will be removed in a future release

## [1.1.1] - 2016-03-29

This release fixed a number of issues with the [1.1.0] release.

## Fixed

- Numerous issues in the `parsemail.py`, `parsearchive.py` and `parsemail.sh`
  scripts
- Permissions of database tables as set by `grant-all` SQL scripts
- Misc. UI and performance improvements

## [1.1.0] - 2016-03-03

This release overhauled the web UI and added support for automatic delegation
of patches, test result capture, and Python 3.4.

### Added

- Python 3.4 support
- Check feature, which can be used to report the status of tests
- Automatic delegation of patches based on file path
- Automated documentation for the XML-RPC API. This can be found at the
  '/xmlrpc' in most Patchwork deployments
- Vagrant support for developers
- Selenium-based UI tests for developers

### Changed

- Overhauled the web UI to reflect modern web standards
- Patches can now be delegated to any Patchwork user
- Significant updates to the documentation
- Assorted cleanup tasks and bug fixes

## [1.0.0] - 2015-10-26

### Added

- Patch tag infrastructure feature, which provides a quick summary of patch
  "tags" (e.g. `Acked-by`, `Reviewed-by`, ...) found in a patch and its replies
- Django 1.7 and Django 1.8 support
- Django `staticfiles` support, which should be used to gather static files for
  for serving via a web server
- tox support for developers

### Changed

- Migrations are now executed using the Django migrations framework
- Moved Patchwork source from the `apps` directory to the top level directory
- The `cron` Django management command has replaced the `bin/patchwork-cron`
  script
- Rewrote documentation to reflect changes in development and deployment best
  practices over the past few years
- Reworked `requirements.txt` and `settings.py` files

### Removed

- Django 1.5 support
- Defunct Python 2.5 code
- Numerous dead files/code

### Deprecated

- Django 1.6 support will be removed in a future release
- Raw SQL migration scripts, previously found at `lib/sql/migration`, will no
  longer be provided. Use the Django Migration framework found in Django 1.7
  and above

### Additional notes

This version changes a few admin-visible components of Patchwork, so upgrading
involves a few steps.

#### Update settings

By default, settings are read from `patchwork/settings/production.py`. To
migrate, use the provided template:

    $ cp patchwork/settings/production{.example,}.py

Merge your previous settings, usually located in `apps/local_settings.py`, to
this file.

#### Fix external references

Any scripts or tools that call Patchwork applications, such as `parsemail.sh`,
must be updated to reference the new location of these scripts. To do this,
simply remove `apps/` from the path, i.e. `apps/patchwork/` becomes
`patchwork`.

In addition, any scripts that set the `DJANGO_SETTINGS_MODULE` environment
variable will need to be updated to reflect the new location, typically:

    DJANGO_SETTINGS_MODULE=patchwork.settings.production

Finally, as the `patchwork-cron.py` script has been replaced by the `cron`
management command, any references to the former should be updated to the
latter. The `cron` management command can be called like so:

    $ ./manage.py cron

#### Migrate to Django Migrations

Future database migrations will be implemented using Django Migrations, rather
than raw SQL scripts. Before switching to Django migrations, first apply any
unapplied migrations in the `lib/sql/migration` folder. For example, on
postgres:

    $ psql -f lib/sql/migration/015-add-patch-tags.sql patchwork
    $ psql -f lib/sql/grant-all.postgres.sql patchwork

Once applied, configure the required Django Migration tables using the
`migrate` managment command:

    $ ./manage.py migrate --fake-initial

#### Migrate to Django Staticfiles

Static content should now be located in the folder indicated by `STATIC_ROOT`.
This should point to somewhere sensible, such as the absolute path of
`htdocs/static` in the Patchwork tree. Configure the `STATIC_ROOT` setting in
your settings file, then run the `collectstatic` management command:

    $ ./manage.py collectstatic

Finally, update your webserver's configuration to serve the static content from
this new location. Refer to the sample web configuration files provided in
`lib` for more information.

## [0.9.0] - 2015-03-22

**NOTE:** 1.0.0 was the first release of Patchwork adopting semantic versioning.
For information on *"0.9.0"* and before, please refer to Git logs.

[Unreleased]: https://github.com/getpatchwork/patchwork/compare/v1.1.0...HEAD
[1.1.0]: https://github.com/getpatchwork/patchwork/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/getpatchwork/patchwork/compare/v0.9.0...v1.0.0
[0.9.0]: https://github.com/getpatchwork/patchwork/compare/c561ebe...v0.9.0