git-ubuntu 1.1 released

Written for git-ubuntu by Robie Basak on 2023-08-31

I have released git-ubuntu 1.1. The major addition is the rich history
adoption via changes files and the corresponding `git ubuntu
prepare-upload` command, which many of you have been using already via
the edge channel. This feature is now available in the stable channel.

Install with:

    sudo snap install --classic git-ubuntu

or, to switch the already-installed snap back to the stable channel from
the edge channel:

    sudo snap refresh --stable git-ubuntu

Preliminary documentation is now available:

    https://canonical-git-ubuntu.readthedocs-hosted.com/en/latest/

In between 1.0 and 1.1 were changes to the importer service itself to
import all packages into Launchpad, for which there was no release of
the tooling; hence the apparent delay between releases this time.

Notable changes from 1.0 to 1.1
-------------------------------

Rich history is adopted if a reference exists to it in the changes file
associated with an upload, provided that it can be retrieved and matches
the upload itself. A new `prepare-upload` subcommand provides a low
level CLI interface that developers can script against to integrate into
their workflows. See the howto documentation[1] for details.

Steve Langasek has written an experimental higher level wrapper that
currently lives in the git-ubuntu source tree as `sandbox/gu-build` to
support some common workflows, such as to automatically include the
correct `dpkg-genchanges -v` option automatically for the upload of
package merges. See his mailing list post[2] for details.

The snap is now based on core20.

All packages are imported by default and the manual allowlist
functionality is removed. The denylist exists to stop futile retries for
edge case packages that fail to import; my goal is to whittle this down
to zero.

The importer now automatically sets a repository as default for its
target after it is imported. This means that manual intervention for new
source packages is no longer required before `git ubuntu clone` will
work. Thanks to the Launchpad team for implementing the access control
needed for the importer to do this safely.

Commits included in this release
--------------------------------

Andreas Hasenack (2):
      Import redis, requested by sergiodj
      Add libtpms to import list

Athos Ribeiro (3):
      Do not rely on host perl stack
      Test dpkg tooling confinement
      Check if perl dependent commands are runnable

Brian Murray (2):
      import packages for the SRU team
      add in virtualbox packages

Bryce Harrington (14):
      whitelist: Drop php-horde-*
      whitelist: Add php7.4 and recently touched php-* packages
      Add fish to import whitelist
      Add php-league-commonmark to whitelist
      Add phpunit to whitelist
      Whitelist *php* packages from main and universe
      Whitelist *ruby* packages from main and universe
      build: Ensure fetch_orig() always returns a list
      Add composer to the whitelist.
      Add python-sqlalchemy-utils to the whitelist.
      Add python-django-formtools to the whitelist.
      Add several packages to the whitelist.
      Add three packages for +1 maintenance to the whitelist.
      Add thin to the whitelist.

Christian Ehrhardt (3):
      whitelist: add openmpi
      whitelist: add packages related to mdevctl MIR (LP: #1889248)
      add libfabric to whitelist

Lena Voytek (1):
      Updates for inclusive naming

Paride Legovini (1):
      snapcraft: drop --enable-experimental-package-repositories

Robie Basak (135):
      Update release process to also close fixed bugs
      prometheus-alertmanager changelog date override
      Add west-chamber to whitelist
      Add xtables-addons to whitelist
      Remove import exception catching
      Handle pygit2 type attribute API change
      Fix Python string escaping
      Handle git email address configuration fixture
      Do not raise StopIteration() directly
      logging.warn() -> logging.warning()
      Add missing dependency on ubuntutools
      Update packaging to be based on 20.04
      Add recent whitelist requests
      Fix tests when run in non-UTC timezones
      Also add ansible-base to whitelist
      Merge branch 'core20'
      Add ubuntu-dev-tools for update-maintainer
      Drop GPG key ID workaround
      Drop pinning
      Drop pygit2_signature_tuple
      Drop GitUbuntuRepository.descendant_of()
      Correctly compare package version strings
      Instantiate HTTPError better in tests
      Add smart whitelist support
      Merge branch 'smart-whitelisting'
      Merge branch 'lp1924983'
      snap: add python3-secretstorage for GNOME keyring
      Merge branch 'keyring-secretstorage'
      Refactor validate_upload_tag()
      Rename validate_upload_tag()
      Pass through spi
      Add get_changes_file_url() method
      Add rich history import from changes files
      Merge branch 'rich-history-from-changes-file'
      source_builder: fix test changelog sign-off line
      Add integration test for sed
      Fix and test update-maintainer integration
      Test and fix git-ubuntu.reconstruct-changelog
      Include all dpkg decompressors in the snap
      Merge branch 'integration-fixes'
      Merge remote-tracking branch 'bryce/fix_export_orig_empty_tarballs_traceback'
      Add experimental "push-for-upload" subcommand
      Whitelist Google-related packages for Utkarsh
      snap: set grade to stable
      Merge remote-tracking branch 'racb/snap-grade-stable'
      Update scriptutils docstrings
      scriptutils/poller: explicitly specify gpg paths
      poller: add --extra-trusted-keyring option
      Merge branch 'push-for-upload'
      Add changelog date override for prips
      Add comment to change date override file
      Rename push-for-upload to prepare-upload
      prepare_upload: factor out push function
      prepare-upload: add mangle feature
      Change repository owner to ~git-ubuntu-import
      Fix git-ubuntu.merge-changelogs name typo
      Merge remote-tracking branch 'athos-ribeiro/leaking-perl-with-wrappers'
      Merge remote-tracking branch 'lvoytek/master'
      Update maintainer email address
      Update email address to request an import
      Update email address default used in tests
      Update default bot account name
      Clean up get_head_versions()
      Use date_created to determine head versions
      Add unit test for get_head_info()
      GitUbuntuSourceInformation: dependency injection
      launchpad_versions_published_after: refactor call
      launchpad_versions_published_after: drop return
      Rewrite launchpad_versions_published_after
      Refactor _head_version_is_equal
      Add test to accept refs that contain '+'
      Improve documentation on validation constants
      submit: default to ~canonical-server-reporter
      More project renames
      Add comment on missing observability
      Add changelog date override for gmsh
      scriptutils: remove pool_map_import_srcpkg()
      _main_with_repo: simplify if statement
      importer: flip sense of push arguments
      importer: flip CLI argument default to not push
      importer-service-worker: add --no-push argument
      Move import_srcpkg() to importer_service_worker.py
      Add production systemd service definitions
      Add mass import failures to denylist
      Add further mass import failures to denylist
      denylist: remove successful imports
      denylist: add known failures and refer to bugs
      Add further changelog date overrides
      Add further changelog date overrides (2)
      More edge case changelog date parsing
      poller: remove allowlists and phasing
      denylist: drop succeeding packages
      Handle missing refs on rich history fetch
      import: add --set-as-default-repository feature
      importer-service-worker: set as default repository
      Drop openssh from denylist
      Initial Sphinx docs
      doc: use standard style
      doc: requirements.txt and configuration for RTD
      doc: improve not up-to-date howto
      doc: improve deletion how-to
      doc: add rich history how-tos
      doc: add changes file reference
      doc: style
      doc: clarify assumptions in rich history howto
      doc rich history: clarify that we push
      doc rich history: add mangle howto
      doc rich history: specify beta snap requirement
      doc rich history: point out branch retention requirement
      Fix typos in test docstrings
      prepare-upload: add test for git+ssh:// rewrite
      prepare-upload: refactor header data handling
      prepare-upload: rewrite LP git+ssh:// URLs
      prepare-upload: test for invalid option on failure
      prepare-upload: output invalid option on failure
      prepare-upload: add test for ssh:// URL rewrites
      prepare-upload: handle ssh:// rewrites
      doc: more on test builders
      doc: howtos on individual pages
      doc: add keyring
      snap.sh: do not generate gpg subkeys
      snap.sh: run snapcraft with sudo
      importer: ignore rich history requiring auth
      Drop amavisd-new from denylist
      Rewrite prepare-upload to fetch before push
      prepare-upload: add --force-push
      prepare-upload: allow arguments either side
      prepare-upload: fix docstrings
      prepare_upload: rename printargs to establish_args
      sandbox/gu-build: update for API changes
      sandbox/gu-build: remove duplication of CLI args
      Add changelog date override for dhcpcd
      Update .readthedocs.yaml
      Revert "snap.sh: run snapcraft with sudo"
      version: bump to 1.1

Sergio Durigan Junior (9):
      Add frr to the whitelist.
      Add node-uid-number to the whitelist.
      Add python-azure to whitelist
      Add mailman3 to the whitelist.
      Add gssproxy to the whitelist.
      Add sane-airscan to the whitelist.
      Add pgloader to the whitelist
      Add ruby-net-ssh to the whitelist
      Accept ref names containing plus sign

Steve Langasek (10):
      mk-build-deps doesn't like version 0
      Initial implementation of a dpkg-buildpackage wrapper
      Add support for figuring -v and -sa options to dpkg-buildpackage
      Use the Changelog.upstream_version property instead of reimplementing
      Only append -v option if the target branch's version is in our changelog
      mk-build-deps doesn't like version 0
      Use the dowload cache for tarballs
      drop stray unused variable left over from development
      make the gu-build exit code match that of dpkg-buildpackage
      Initial support for 'gu-build' wrapper that wraps dpkg-buildpackage

[1] https://canonical-git-ubuntu.readthedocs-hosted.com/en/latest/howto/upload.html
[2] https://lists.ubuntu.com/archives/ubuntu-devel/2023-June/042595.html

Read all announcements