Thursday 31 August 2023

git-ubuntu 1.1 released

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