Upgrading Pagure
================
From 2.1 to 2.2
---------------
2.2 brings a number of bug fixes and a few improvements.
One of the major changes impacts the databases where we must change some of the
table so that the foreign key cascade on delete (fixes deleting a project when a
few plugins were activated).
When upgrading for 2.1 to 2.2 all you will have to do is:
* Update the database scheme using alembic: ``alembic upgrade head``
.. note:: If you run another database system than PostgreSQL the alembic
revision ``317a285e04a8_delete_hooks.py`` will require adjustment as the
foreign key constraints are named and the names are driver dependant.
From 2.0 to 2.1
---------------
2.1 brings its usual flow of improvements and bug fixes.
When upgrading from 2.0.x to 2.1 all you will have to:
* Update the database schame using alembic: ``alembic upgrade head``
From 1.x to 2.0
---------------
As the version change indicates, 2.0 brings quite a number of changes,
including some that are not backward compatible.
When upgrading to 2.0 you will have to:
* Update the database schema using alembic: ``alembic upgrade head``
* Create the new DB tables so that the new plugins work using the
``createdb.py`` script
* Move the forks git repo
Forked git repos are now located under the same folder as the regular git
repos, just under a ``forks/`` subfolder.
So the structure changes from: ::
repos/
├── foo.git
└── bar.git
forks/
├── patrick/
│ ├── test.git
│ └── ipsilon.git
└── pingou/
├── foo.git
└── bar.git
to: ::
repos/
├── foo.git
├── bar.git
└── forks/
├── patrick/
│ ├── test.git
│ └── ipsilon.git
└── pingou/
├── foo.git
└── bar.git
So the entire ``forks`` folder is moved under the ``repos`` folder where
the other repositories are, containing the sources of the projects.
Git repos for ``tickets``, ``requests`` and ``docs`` will be trickier to
move as the structure changes from: ::
tickets/
├── foo.git
├── bar.git
├── patrick/
│ ├── test.git
│ └── ipsilon.git
└── pingou/
├── foo.git
└── bar.git
to: ::
tickets/
├── foo.git
├── bar.git
└── forks/
├── patrick/
│ ├── test.git
│ └── ipsilon.git
└── pingou/
├── foo.git
└── bar.git
Same for the ``requests`` and the ``docs`` git repos.
As you can see in the ``tickets``, ``requests`` and ``docs`` folders there
are two types of folders, git repos which are folder with a name ending
with ``.git``, and folder corresponding to usernames. These last ones are
the ones to be moved into a subfolder ``forks/``.
This can be done using something like: ::
mkdir forks
for i in `ls -1 |grep -v '\.git'`; do mv $i forks/; done
* Re-generate the gitolite configuration.
This can be done via the ``Re-generate gitolite ACLs file`` button in the
admin page.
* Keep URLs backward compatible
The support of pseudo-namespace in pagure 2.0 has required some changes
to the URL schema:
https://pagure.io/pagure/053d8cc95fcd50c23a8b0a7f70e55f8d1cc7aebb
became:
https://pagure.io/pagure/c/053d8cc95fcd50c23a8b0a7f70e55f8d1cc7aebb
(Note the added /c/ in it)
We introduced a backward compatibility fix for this.
This fix is however *disabled* by default so if you wish to keep the URLs
valid, you will need to adjust you configuration file to include: ::
OLD_VIEW_COMMIT_ENABLED = True