These are some best practices that the Ubuntu Studio Team uses when updating packaging.

Each commit should be self-contained. If there are changelog entries, include them in the commit. Non-trivial changes should get a changelog entry, and you can use the changelog entry as the commit message by running debcommit [-a].

After each upload, a single commit should be done containing a new changelog entry. Similarly, dch -r (finalizing the packaging before an upload) should be in its own commit.

When a package is uploaded to the archive, the commit should be tagged, but the tag should only be pushed once the upload is accepted. You can subscribe to the -changes list for the development release (e.g. bionic-changes) to know when this happens.

Packages not kept in Git should be converted to Git. This can be done in a variety of ways, one of which is to use git-remote-bzr.

Always add changelog entries in a stanza with an "UNRELEASED" distribution. When it's uploaded, the upload will have the proper codename.

Packages kept in Git should preferably follow a branch naming scheme of "ubuntu/$RELEASE" to keep it consistent, unless the package is only pushed to in the development release, in which case "master" should be the only branch used.

Packages should keep a current Debian Policy compliance version and a current debhelper compat. They should also have wrap-and-sort ran on them from time-to-time to ensure cleanliness.