mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-05 16:13:59 +00:00
118 lines
2.3 KiB
Markdown
118 lines
2.3 KiB
Markdown
# Picard release process
|
|
|
|
|
|
## Release preparation (few weeks/days before)
|
|
|
|
|
|
### Synchronize picard.pot with sources
|
|
|
|
```bash
|
|
python setup.py regen_pot_file && git diff --quiet || git commit -m 'Update pot file' -- po/picard.pot
|
|
```
|
|
|
|
And push changes to main remote repository, see [po/README.md](po/README.md) for details about translations
|
|
|
|
## Ensure git repository tree is clean
|
|
|
|
From the local repository:
|
|
|
|
### Check out the repo master branch
|
|
|
|
```bash
|
|
git fetch $PICARD_REMOTE && git checkout master
|
|
```
|
|
|
|
### Ensure nothing is on the way
|
|
|
|
```bash
|
|
git reset --hard $PICARD_REMOTE/master && git clean -f -d
|
|
```
|
|
|
|
|
|
#### Remove old compiled modules
|
|
|
|
```bash
|
|
find . -type f -name '*.pyc' -exec rm -f {} \;
|
|
```
|
|
|
|
### Tag to save the current state
|
|
|
|
```bash
|
|
git tag "before-release-$PICARD_VERSION" --force
|
|
```
|
|
|
|
### Remove any BOM nasty bytes from files
|
|
|
|
This shouldn't be needed, but better to check before releasing
|
|
|
|
```bash
|
|
git ls-tree --full-tree -r HEAD --name-only |while read f; do sed -i '1s/^\xEF\xBB\xBF//' "$f"; done && git diff --quiet || git commit -a -m 'Remove nasty BOM bytes'
|
|
```
|
|
|
|
## Get latest translations from Transifex
|
|
|
|
```bash
|
|
python setup.py pull_translations && git diff --quiet || git commit -m 'Update .po files' -- po/
|
|
```
|
|
|
|
## Synchronize generated consts
|
|
|
|
```bash
|
|
python setup.py update_constants && git diff --quiet || git commit -a -m 'Update constants' -- picard/const/*.py
|
|
```
|
|
|
|
## Update NEWS.txt
|
|
|
|
TODO: explain how
|
|
|
|
## Update Picard version
|
|
|
|
Edit `picard/__init__.py` and set new version tuple
|
|
|
|
Run tests:
|
|
|
|
```bash
|
|
python setup.py test
|
|
```
|
|
|
|
Commit changes!
|
|
|
|
|
|
## Tag new version
|
|
|
|
```bash
|
|
git tag -s "$PICARD_RELEASE_TAG" -m "Release $PICARD_VERSION"
|
|
```
|
|
|
|
Stable release tags have the following format: `release-#.#.#`
|
|
Example: `release-2.1.0`
|
|
|
|
## Update Picard version to next dev version
|
|
|
|
Edit `picard/__init__.py` and set new dev version tuple.
|
|
|
|
Run tests:
|
|
|
|
```bash
|
|
python setup.py test
|
|
```
|
|
|
|
Commit changes!
|
|
|
|
|
|
## Push new commits and tags to remote
|
|
|
|
```bash
|
|
git push "$PICARD_REMOTE" master:master
|
|
git push "$PICARD_REMOTE" tag "$PICARD_RELEASE_TAG"
|
|
```
|
|
|
|
### To revert after push
|
|
|
|
```bash
|
|
git tag -d "release-$PICARD_VERSION"
|
|
git reset --hard "before-release-$PICARD_VERSION"
|
|
git push "$PICARD_REMOTE" :"$TAG"
|
|
git push "$PICARD_REMOTE" "before-release-$PICARD_VERSION":master --force
|
|
```
|