Commit 776a3755 authored by intrigeri's avatar intrigeri

GitLab: update URLs

In passing, I'm removing a few obsolete ones.
parent 370930c1
[submodule "submodules/jenkins-tools"]
path = submodules/jenkins-tools
url = https://git-tails.immerda.ch/jenkins-tools
url = https://gitlab.tails.boum.org/tails/jenkins-tools.git
[submodule "submodules/chutney"]
path = submodules/chutney
url = https://git-tails.immerda.ch/chutney
url = https://gitlab.tails.boum.org/tails/chutney.git
branch = feature/tails_test_suite
[submodule "submodules/mirror-pool-dispatcher"]
path = submodules/mirror-pool-dispatcher
url = https://git-tails.immerda.ch/mirror-pool-dispatcher
url = https://gitlab.tails.boum.org/tails/mirror-pool-dispatcher.git
[submodule "submodules/aufs-standalone"]
path = submodules/aufs-standalone
url = https://github.com/sfjro/aufs5-standalone.git
[submodule "submodules/tails-workarounds"]
path = submodules/tails-workarounds
url = https://git-tails.immerda.ch/tails-workarounds
url = https://gitlab.tails.boum.org/tails/tails-workarounds.git
......@@ -8,7 +8,7 @@ copyright_year = 2013
[MetaResources]
homepage = https://tails.boum.org/
repository.url = git://git.tails.boum.org/tails
repository.url = https://gitlab.tails.boum.org/tails/tails.git
repository.type = git
[@Filter]
......
......@@ -12,7 +12,7 @@ copyright_year = 2014
[MetaResources]
homepage = https://tails.boum.org/
repository.url = git://git.tails.boum.org/tails
repository.url = https://gitlab.tails.boum.org/tails/tails.git
repository.type = git
[@Filter]
......
......@@ -1141,7 +1141,7 @@ tails (3.14.1) unstable; urgency=medium
- Revert "Build system: try to be smart again by fetching only the
refs we need." This optimization overrides the trick we have on
Jenkins (set_origin_base_branch_head in
https://git.tails.boum.org/jenkins-jobs/tree/macros/builders.yaml),
jenkins-jobs:macros/builders.yaml),
that ensures that a reproducibly_build_Tails_ISO_* job builds
from the commit used by the first build. (Closes: #16730)
......
......@@ -6,8 +6,8 @@ Build-Depends-Indep: dpkg-dev (>= 1.14.25)
Maintainer: Tails developers <tails@boum.org>
Standards-Version: 3.8.1
Homepage: https://tails.boum.org/
Vcs-Browser: https://git-tails.immerda.ch/tails
Vcs-Git: git://git.tails.boum.org/tails
Vcs-Browser: https://gitlab.tails.boum.org/tails/tails
Vcs-Git: https://gitlab.tails.boum.org/tails/tails.git
Package: tails
Architecture: all
......
......@@ -135,9 +135,9 @@ allow_symlinks_before_srcdir: 1
# unix users whose commits should be checked by the pre-receive hook
#untrusted_committers: []
# gitweb url to show file history ([[file]] substituted)
historyurl: 'https://salsa.debian.org/tails-team/tails/commits/master/wiki/src/[[file]]'
historyurl: 'https://gitlab.tails.boum.org/tails/tails/commits/master/wiki/src/[[file]]'
# gitweb url to show a diff ([[file]], [[sha1_to]], [[sha1_from]], [[sha1_commit]], and [[sha1_parent]] substituted)
diffurl: 'https://salsa.debian.org/tails-team/tails/commit/[[sha1_commit]]'
diffurl: 'https://gitlab.tails.boum.org/tails/tails/commit/[[sha1_commit]]'
# where to pull and push changes (set to empty string to disable)
gitorigin_branch: ''
# branch that the wiki is stored in
......
......@@ -2,7 +2,7 @@
# The rewrite rules used by our website now live there:
#
# https://git-tails.immerda.ch/puppet-tails/tree/templates/website/nginx/rewrite_rules.conf.erb
# https://gitlab.tails.boum.org/tails/puppet-tails/-/blob/master/templates/website/nginx/rewrite_rules.conf.erb
#
# That file documents how to use our rewrite rules locally and how to
# contribute changes.
......@@ -23,7 +23,7 @@ cautiously, if ever.
# Source code
* `tails::reprepro::snapshots::tagged` class in
[[!tails_gitweb_repo puppet-tails]]
[[!tails_gitweb_puppet_tails]]
* bits scattered in the main Tails Git repository (details below)
# Design notes
......@@ -62,8 +62,8 @@ manifest:
### How it's done in practice
* [[!tails_gitweb auto/scripts/tag-apt-snapshots]]
* [tails-prepare-tagged-apt-snapshot-import](https://git-tails.immerda.ch/puppet-tails/tree/files/reprepro/snapshots/tagged/tails-prepare-tagged-apt-snapshot-import)
* [tails-publish-tagged-apt-snapshot](https://git-tails.immerda.ch/puppet-tails/tree/files/reprepro/snapshots/time_based/tails-publish-tagged-apt-snapshot)
* [[!tails_gitweb_puppet_tails files/reprepro/snapshots/tagged/tails-prepare-tagged-apt-snapshot-import desc="tails-prepare-tagged-apt-snapshot-import"]]
* [[!tails_gitweb_puppet_tails files/reprepro/snapshots/time_based/tails-publish-tagged-apt-snapshot desc="tails-publish-tagged-apt-snapshot"]]
### A corner case: APT pinning magics
......
......@@ -52,7 +52,7 @@ little value.
# Source code
* `tails::reprepro::snapshots::time_based` class in
[[!tails_gitweb_repo puppet-tails]]
[[!tails_gitweb_puppet_tails]]
* bits scattered in the main Tails Git repository (details below)
SSH access
......@@ -275,11 +275,11 @@ The counterpart of using snapshots created with `gensnapshot` is that:
* garbage collecting expired snapshots is a bit more involved, i.e.
we have to
[do it ourselves](https://git-tails.immerda.ch/puppet-tails/tree/files/reprepro/snapshots/time_based/tails-delete-expired-apt-snapshots);
[[!tails_gitweb_puppet_tails files/reprepro/snapshots/time_based/tails-delete-expired-apt-snapshots desc="do it ourselves"]];
* bumping `Valid-Until` for a given time-based snapshot has to be
done directly in `dist`, without any help from reprepro; so here
again, we
[do it ourselves](https://git-tails.immerda.ch/puppet-tails/tree/files/reprepro/snapshots/time_based/tails-bump-apt-snapshot-valid-until).
[[!tails_gitweb_puppet_tails files/reprepro/snapshots/time_based/tails-bump-apt-snapshot-valid-until desc="do it ourselves"]]
None of these problems warrant going back to the other option... and
having to deal with 80GB+ Berkeley DB databases.
......@@ -367,7 +367,7 @@ one reprepro instance per mirrored archive) are:
To have the above HTTP requests translate to access to these files,
we use
[a set of HTTP rewrite rules](https://git-tails.immerda.ch/puppet-tails/tree/templates/reprepro/snapshots/time_based/nginx_site.erb).
[[!tails_gitweb_puppet_tails templates/reprepro/snapshots/time_based/nginx_site.erb desc="a set of HTTP rewrite rules"]].
Note: this works because APT only warns when the codename in the
`Release` file doesn't match the one requested in `sources.list`.
......
......@@ -53,7 +53,7 @@ To build Tails you need:
[[development branch|contribute/git#main-repo]], execute the
following commands:
git clone https://git-tails.immerda.ch/tails && \
git clone https://gitlab.tails.boum.org/tails/tails.git && \
cd tails && \
git checkout devel && \
git submodule update --init
......
......@@ -36,7 +36,7 @@ If you are in Tails, see the [[dedicated instructions|website#tails]].
4. Clone our main [[Git repository|git]]:
git clone https://git-tails.immerda.ch/tails
git clone https://gitlab.tails.boum.org/tails/tails.git
[[!inline pages="contribute/build/website/src.inline" raw="yes" sort="age"]]
......@@ -82,7 +82,7 @@ Build the website in Tails
5. Clone our main [[Git repository|git]] in the <span class="filename">Persistent</span> folder:
cd ~/Persistent/ && \
git clone https://git-tails.immerda.ch/tails
git clone https://gitlab.tails.boum.org/tails/tails.git
[[!inline pages="contribute/build/website/src.inline" raw="yes" sort="age"]]
......
......@@ -815,7 +815,7 @@ reported issue. WhisperBack's graphical interface fully supports
internationalization and is ready to be translated.
- [[!tails_gitweb_dir config/chroot_local-includes/etc/whisperback]]
- [WhisperBack source code](https://git-tails.immerda.ch/whisperback)
- [[!tails_gitweb_repo whisperback desc="WhisperBack source code"]]
## 3.6 Configuration
......
......@@ -124,9 +124,7 @@ As what follows clearly shows, the upstream HTP has quite a few
drawbacks that make it unfit for our needs. That's why Tails uses a
custom version of the Perl HTP client into
[[!tails_gitweb config/chroot_local-includes/usr/local/sbin/htpdate]].
The repository we copied this script from can be found there:
https://git-tails.immerda.ch/htp
This script is maintained in [[!tails_gitweb_repo htp]].
For reasons detailed below, this version of htpdate uses curl for all
of its HTTP operations.
......
......@@ -83,7 +83,7 @@ contains a package name per line and install these packages with `apt-get`
In the beginning of the process, the user is notified through desktop
notifications that additional software is being installed:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - installing.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/notification - installing.png"/>
In the end, they are informed of success of failure. In the latter case, they are
offered to open a configuration window or to examine the logs in order to better
......@@ -91,7 +91,7 @@ understand the issue. The notifications with buttons displayed are as the deskto
user and are implemented in
[[!tails_gitweb config/chroot_local-includes/usr/local/lib/tails-additional-software-notify]].
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - installation failed.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/notification - installation failed.png"/>
Software upgrade on Internet connection
......@@ -122,7 +122,7 @@ In the end, they are informed of success of failure. In the latter case,
they are offered to open a configuration window or to examine the logs
in order to better understand the issue.
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - upgrade failed.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/notification - upgrade failed.png"/>
User interface for addition and removal of software
---------------------------------------------------
......@@ -155,7 +155,7 @@ installed or removed.
#### With persistent storage unlocked:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - add.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/notification - add.png"/>
When *Add To Persistent Storage* is clicked,
`/usr/bin/tails-persistence-setup` is started as
......@@ -163,11 +163,11 @@ When *Add To Persistent Storage* is clicked,
`AdditionalSoftware` preset. The new additional packages are then added
atomically to the `live-additional-software.conf` configuration file
(this logic is handled by
<https://git-tails.immerda.ch/pythonlib/plain/tailslib/additionalsoftware.py>)
[[!tails_gitweb config/chroot_local-includes/usr/lib/python3/dist-packages/tailslib/additionalsoftware.py]]).
#### Without persistent storage
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - add without persistent storage.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/notification - add without persistent storage.png"/>
When *Add To Persistent Storage* is clicked,
`/usr/bin/tails-persistence-setup` is started as
......@@ -177,7 +177,7 @@ automatically enabled. The new additional packages are then added to the
`live-additional-software.conf` configuration file, which is in this
case mounted to `/media/tails-persistence-setup/TailsData` instead of
`/live/persistence/TailsData_unlocked` (this logic in handled by
<https://git-tails.immerda.ch/pythonlib/plain/tailslib/persistence.py>).
[[!tails_gitweb config/chroot_local-includes/usr/lib/python3/dist-packages/tailslib/persistence.py]]).
The systemd service
[[!tails_gitweb config/chroot_local-includes/lib/systemd/system/tails-synchronize-data-to-new-persistent-volume-on-shutdown.service]]
......@@ -198,7 +198,7 @@ learn about this feature when it's most relevant for them.
This happens when running from a DVD, virtual machine, or intermediary
Tails.
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - impossible persistent storage.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/notification - impossible persistent storage.png"/>
The state file `/run/live-additional-software/installer-asked` ensures
this notification is only shown once per session, not to bother people
......@@ -208,12 +208,12 @@ too much.
<img src="https://redmine.tails.boum.org/code/attachments/download/1926/asp-flow-removed.svg" height="auto" />
<img src="https://git.tails.boum.org/ux/plain/additional software/png/notification - remove.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/notification - remove.png"/>
When *Remove* is clicked, the packages are removed atomically from the
`live-additional-software.conf` configuration file (this logic is
handled by
<https://git-tails.immerda.ch/pythonlib/plain/tailslib/additionalsoftware/config.py>).
[[!tails_gitweb config/chroot_local-includes/usr/lib/python3/dist-packages/tailslib/additionalsoftware.py]]).
Additional Software configuration window
----------------------------------------
......@@ -236,22 +236,22 @@ persistent storage is locked, or if it is impossible to have a persistent
storage (for example, when running from a DVD or a virtual machine) the window
shows an explanation text with appropriate pointers:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - without persistent storage.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/additional software - without persistent storage.png"/>
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - empty.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/additional software - empty.png"/>
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - locked persistent storage.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/additional software - locked persistent storage.png"/>
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - impossible persistent storage.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/additional software - impossible persistent storage.png"/>
When packages have already been added, the window displays a list of
these Additional Software Packages:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/additional software.png"/>
When clicking on the delete cross, a confirmation dialog is displayed:
<img src="https://git.tails.boum.org/ux/plain/additional software/png/additional software - remove.png"/>
<img src="https://gitlab.tails.boum.org/tails/ux/-/raw/master/additional software/png/additional software - remove.png"/>
The privileged helper
[[!tails_gitweb config/chroot_local-includes/usr/local/sbin/tails-additional-software-remove]]
......
......@@ -122,6 +122,5 @@ future upstream of ours.
Source code
===========
The Tails Installer source code lives in a Git repository:
<https://git-tails.immerda.ch/liveusb-creator/>
The Tails Installer source code lives in the [[!tails_gitweb_repo installer]]
Git repository.
......@@ -8,7 +8,7 @@ depending on the use case:
* We have dispatcher code, in JavaScript, that dynamically modifies the
hostname in the URL of our ISO image,
so that each user is pointed to random mirror.
- [public read-only mirror of the Git repository](https://git-tails.immerda.ch/mirror-pool-dispatcher/)
- [[!tails_gitweb_repo mirror-pool-dispatcher desc="Git repository"]]
- Vanilla JS (no frameworks)
- The code is deployed live: <https://tails.boum.org/lib/js/mirror-dispatcher.js>
- The library code has two consumers:
......@@ -74,7 +74,7 @@ of them we need a few values:
For a more formal, and probably more up-to-date definition of the data
model, better see
[its JSON schema](https://git-tails.immerda.ch/mirror-pool/tree/schema.json).
[its JSON schema](https://gitlab.tails.boum.org/tails/mirror-pool/-/blob/master/schema.json).
Here is
[an example configuration file](https://git-tails.immerda.ch/mirror-pool/tree/example-mirrors.json).
[an example configuration file](https://gitlab.tails.boum.org/tails/mirror-pool/-/blob/master/example-mirrors.json).
......@@ -101,7 +101,7 @@ There are several languages enabled, some of them with few or no
translations. As everything is fed back to the Tails canonical
repository, all files are available when cloning this repository:
git clone https://git-tails.immerda.ch/tails
git clone https://gitlab.tails.boum.org/tails/tails.git
If needed, for exceptional means, Weblate's Git repository can be cloned
or added as a remote:
......@@ -128,9 +128,11 @@ Automatic merging and pushing
-----------------------------
The integration of changes from the different repositories is done by a
script which is executed on the VM hosting Weblate as [a cronjob](https://git-tails.immerda.ch/puppet-tails/tree/manifests/weblate.pp). The
[`cron.sh`](https://git-tails.immerda.ch/puppet-tails/tree/files/weblate/scripts/cron.sh) script
has the following steps which we will explain below:
script which is executed on the VM hosting Weblate as
[[!tails_gitweb_puppet_tails manifests/weblate.pp desc="a cronjob"]].
The
[[!tails_gitweb_puppet_tails files/weblate/scripts/cron.sh desc="`cron.sh`"]]
script has the following steps which we will explain below:
1. Canonical → Integration:
Update the integration repository with changes made on the
......@@ -167,7 +169,8 @@ repository**
The script fetches from the canonical (remote) repository and tries to
merge changes into the (local) integration repository. The merge
strategy used for this step is defined in [`update_weblate_git.py`](https://git-tails.immerda.ch/puppet-tails/tree/files/weblate/scripts/update_weblate_git.py):
strategy used for this step is defined in
[[!tails_gitweb_puppet_tails files/weblate/scripts/update_weblate_git.py desc="`update_weblate_git.py`"]]:
When this script is executed, it merges changes in PO files based on
single translation units (`msgids`). A merge conflict occurs when the same
......@@ -227,7 +230,8 @@ repository**
The script fetches from the Weblate (remote) Git repository and tries to
merge changes into the (local) integration repository. The merge
strategy used for this step is defined in [`merge_weblate_changes.py`](https://git-tails.immerda.ch/puppet-tails/tree/files/weblate/scripts/merge_weblate_changes.py).
strategy used for this step is defined in
[[!tails_gitweb_puppet_tails files/weblate/scripts/merge_weblate_changes.py desc="`merge_weblate_changes.py`"]].
Changes already present in the integration repository are preferred over
the changes from the remote, Weblate repository. This makes fixes
......@@ -250,7 +254,7 @@ Canonical aka puppet-git.lizard. After this, the Canonical repository has
everything integrated from Weblate.
On the side of the canonical Git repository, a Gitolite hook
([`tails-weblate-update.hook`](https://git-tails.immerda.ch/puppet-tails/tree/files/gitolite/hooks/tails-weblate-update.hook))
([[!tails_gitweb_puppet_tails files/gitolite/hooks/tails-weblate-update.hook desc="`tails-weblate-update.hook`"]])
makes sure that Weblate only pushes changes on PO files.
This hook also checks and verifies the committer of each commit, to make
sure only translations made on the Weblate platform are automatically
......@@ -278,14 +282,14 @@ If the fast-forward merge was successful, we need to update Weblate's components
to reflect the modifications that happened in Git, such as
string and file updates, removals, renames, or additions. This is
handled by another script:
[`update_weblate_components.py`](https://git-tails.immerda.ch/puppet-tails/tree/files/weblate/scripts/update_weblate_components.py).
[[!tails_gitweb_puppet_tails files/weblate/scripts/update_weblate_components.py desc="`update_weblate_components.py`"]].
Besides our scripts that modify the Weblate repository, Weblate itself
keeps creating commits and updates the master branch. That's why the
script is using a dedicated Git remote named `cron` to keep track of which
commits need to be looked at for Weblate component changes. This remote
name is set in
[weblate.pp](https://git-tails.immerda.ch/puppet-tails/tree/manifests/weblate.pp)
[[!tails_gitweb_puppet_tails manifests/weblate.pp desc="weblate.pp"]]
and used in the cronjob like this:
update_weblate_components.py --remoteBranch=cron/master [...]
......@@ -326,13 +330,13 @@ This allows:
### What is done behind the scenes to generate a new version of the staging website?
The
[`update-staging-website.sh`](https://git-tails.immerda.ch/puppet-tails/tree/files/weblate/scripts/update-staging-website.sh)
[[!tails_gitweb_puppet_tails files/weblate/scripts/update-staging-website.sh desc="`update-staging-website.sh`"]]
cronjob is run.
This cronjob calls a script that extracts suggestions from Weblate's
database and applies them to a local clone of Weblate's Git repository,
after having updated this clone:
[`save-suggestions.py`](https://git-tails.immerda.ch/puppet-tails/tree/files/weblate/scripts/save-suggestions.py)
[[!tails_gitweb_puppet_tails files/weblate/scripts/save-suggestions.py desc="`save-suggestions.py`"]].
After that we run `ikiwiki --refresh` using an dedicated `ikiwiki.setup`
file for the staging website.
......@@ -362,10 +366,11 @@ window, in the _Machine translation_ tab.
We use tmserver for machine translation ([upstream documentation](https://docs.weblate.org/en/weblate-2.20/admin/machine.html#tmserver)).
In order to update the suggestion we run
[`update_tm.sh`](https://git-tails.immerda.ch/puppet-tails/tree/templates/weblate/update_tm.sh.erb) via cronjob every month.
[[!tails_gitweb_puppet_tails templates/weblate/update_tm.sh.erb desc="`update_tm.sh`"]]
via cronjob every month.
The tmserver can be queried like this [(see
`tmserver.service`)](https://git-tails.immerda.ch/puppet-tails/tree/manifests/weblate.pp):
The tmserver can be queried like this
[[!tails_gitweb_puppet_tails manifests/weblate.pp desc="(see `tmserver.service`)"]]:
http://localhost:8080/tmserver/en/de/unit/contribute
......
......@@ -28,7 +28,8 @@ i.e. browsers that support WebAPIs, in particular
[Fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API), and
[async/await](https://caniuse.com/#feat=async-functions).
The code of *Tails Verification* is available in `git clone https://git-tails.immerda.ch/verification-extension`.
The code of *Tails Verification* is available in [[!tails_gitweb_repo
verification-extension]].
[[!toc levels=2]]
......@@ -309,7 +310,7 @@ Embedded *Forge* library
------------------------
Contrary to its predecessor
([DAVE](https://git-tails.immerda.ch/download-and-verify-extension)),
([DAVE](https://git.tails.boum.org/download-and-verify-extension)),
*Tails Verification* cannot rely on native API calls to calculate the
checksum. So it embeds the *Forge* library:
......
[[!meta title="What must I do now that the Git repository's history has been rewritten?"]]
[[!toc levels=1]]
<div class="note">
This is about the main Tails Git repository. Other repositories, such
as the ones for the Greeter and other custom software, are not affected.
</div>
Back up your local Git directory
================================
<div class="caution">
If you make a mistake, some of the operations below will destroy your
great carefully hand-crafted Tails work.
</div>
Therefore, first backup the directory where your local Git working
directory lives.
Store the name of the official Git remote
=========================================
Find out how you have named the Git remote that points to the official
repository:
OFFICIAL_REMOTE=$(git remote -v \
| grep --color=never -E \
'[a-zA-Z0-9_-]+\s+(https://git-tails.immerda.ch/tails(?:.git)?\s+|(ssh://)?boum_org_amnesia@webmasters\.boum\.org(:wiki\.git|/~/wiki.git)).*\(fetch\)$' \
| awk '{print $1}')
[ -n "$OFFICIAL_REMOTE" ] || echo "No official remote found."
If you see "No official remote found", then you are probably using
a deprecated or unsafe URL for your official remote. You'll need to
fix that first: [[find out what the correct URL
is|contribute/git#main-repo]], and then fix it in `.git/config` and
run the commands above again.
<div class="caution">
All commands that follow must be run <emph>in the same terminal</emph> as the
previous ones: they are going to reuse the
<code>$OFFICIAL_REMOTE</code> shell variable and may do pretty ugly
things if it is not properly defined.
</div>
Delete all local tags
=====================
So that you don't publish again any deleted tag that was based on the old,
non-rewritten history, delete all local tags you have:
git tag | xargs git tag -d
Fetch the rewritten history
===========================
Fetch the content of the updated official repository:
git fetch --prune "$OFFICIAL_REMOTE" && \
git fetch "$OFFICIAL_REMOTE" --tags
Back up your existing local branches
====================================
Rename every local branch so that their name starts with the
`old-` prefix:
for b in $(git branch --no-color) ; do
[ "$b" != '*' ] || continue
git branch -m "$b" "old-$b"
done
This is needed for two reasons:
* This makes sure that any work you may have started in the past, and
that was not merged yet, is saved somewhere and can be salvaged
later if needed.
* The `old-` prefix is meant to be a warning sign, so that you don't
mistakenly base future work on the old, non-rewritten Git history
(such work *cannot* be merged into the official repository anymore,
as it would re-import all the data we just managed to get rid of).
Clean up your personal Git repository
=====================================
If you have a personal online Git repository, please consider
following these instructions.
It is not compulsory, but if you don't do that, then any new
contributor who adds your personal Git repository as a Git remote will
need to download hundreds of megabytes of useless data, which is not
very welcoming. In particular, newcomers on your team would be
negatively affected... and you want new teammates, right? :)
I'm looking at you, dear translators.
So, right now your personal Git repository contains _both_ the old
(non-rewritten) and the new (rewritten) Git history. Here is how to
get rid of the old one.
### Set the `MY_REMOTE` variable
In the following command, replace `XXX_REPLACE_ME` with the name of the remote
that points to your personal online Git repository:
MY_REMOTE=XXX_REPLACE_ME
## Delete all remote branches
List branches that are in your personal online Git repository (in the
following commands, ):
git branch --no-color -r --list "${MY_REMOTE}/*" \
| grep -vE "^\s+${MY_REMOTE}/HEAD\s+"
For each such branch, check if you have work in there that can still
be useful. If it's the case, then export it outside of Git, e.g.
using `git format-patch`.
Then, delete all remote branches in your personal online Git
repository:
for remote_branch in $(git branch --no-color -r --list "${MY_REMOTE}/*" \
| grep -vE "^\s+${MY_REMOTE}/HEAD\s+") ; do
branch=$(echo "$remote_branch" | sed -r -e "s,^${MY_REMOTE}/,,")
git push --force "$MY_REMOTE" ":$branch"
done
## Make sure you publish only up-to-date tags
Force-push the updated tags so that they replace the old ones in your
personal online Git repository:
git push --force "$MY_REMOTE" --tags
Start working again
===================
You may use `git checkout` as usual to create:
* a new local branch, for work you are starting right now;
* a new local branch tracking one that exists in the official
repository already, for work you are following-up on.
Later, when you push a branch to your personal Git repository:
* The first time you do that, it can take a while.
* If that branch did previously exist there, then you may need to pass
the `--force` option to `git push`: to avoid losing data, Git
refuses to rewrite history on the remote by default, so in the rare
cases when we want to do that (which is precisely the case here),
one has to override this protection.
......@@ -132,12 +132,11 @@ You can submit small, easy changes as Git patches (prepared with the
`git format-patch` command) over email to [[tails-dev@boum.org|about/contact#tails-dev]].
For larger changes that will certainly require a few review/fix cycles
before being merged, it's better if you push your work to a dedicated
Git topic branch, and [[ask us to review it|contribute/merge policy/submit]]. If you already know where
to host your personal repository in a public online place, this is
great; otherwise, you can [fork us on
Salsa](https://salsa.debian.org/tails-team/tails), or ask the Tails system
administrators ([[tails-sysadmins@boum.org|about/contact#tails-sysadmins]]) to host your repository.
before being merged, it's better if you:
1. Fork us on [[!tails_gitweb_repo tails/tails desc="our GitLab"]]
2. Push your work to a dedicated Git topic branch
3. [[Ask us to review it|contribute/merge policy/submit]].
# Want more?
......
......@@ -31,7 +31,7 @@ But there are still many ways you can start contributing:
greatly welcome. This can be done by sending Git patches to
[[tails-dev@boum.org|about/contact#tails-dev]] or by publishing a
[[Git]] branch (for example to a fork on
[Salsa](https://salsa.debian.org/tails-team/tails)). In general,
[[!tails_gitweb_repo tails/tails desc="our GitLab"]]. In general,
documentation changes should be based on the `master` branch.
We recommend you to [[build an offline version of the
......
......@@ -6,8 +6,8 @@
- Replace placeholders in template
- Gather information about changes
- Tails changelog
- <https://salsa.debian.org/tails-team/tails/blob/stable/debian/changelog>
- <https://salsa.debian.org/tails-team/tails/blob/testing/debian/changelog>
- [[!tails_gitlab tails/tails/-/blob/stable/debian/changelog]]
- [[!tails_gitlab tails/tails/-/blob/testing/debian/changelog]]
- If the changelog of the final release has not been written
yet, either book some time to update the release notes on the
day of the release or go through the tickets:
......
......@@ -226,7 +226,9 @@ for your infrastructure.