On Thursday, December 4, 2025 12:45:30 PM Mountain Standard Time Andrey
Rakhmatullin wrote:
> On Fri, Dec 05, 2025 at 01:12:14AM +0530, Jai kadam wrote:
> >> >> You can also consult its manpage to learn what does it do.
> >> >
> >> >I see, I read the man page just now after your suggestion it's not
> >>
> >> detailed.
> >>
> >> It's very detailed
> >
> >By manual you mean "man gbp" or something else?
>
> I mean gbp-push(1), you could learn that it exists from "SEE ALSO" of
> gbp(1).
To add a bit more information about the behavior of "gbp push” and “git push”
and when to use them and mix their uses:
1. The key to understanding this is that “gbp push” will push the following
things:
a. The pristine-tar branch (if in use).
b. The upstream branch.
c. Any new tags on the upstream branch.
d. The debian branch, but only if the changelog does not target UNRELEASED.
e. Check for a new tag in the debian branch for the latest changelog entry
and push it, but only if the changelog does not target UNRELEASED.
2. What we want to avoid is pushing a debian/X.Y-Z tag on the debian branch
before X.Y-Z has actually been accepted into Debian.
3. The following workflow accomplishes this:
a. gbp import-orig --uscan (this updates pristine-tar if used, the upstream
branch, the debian branch, and creates a new upstream tag).
b. dch (adjust the changelog version number accordingly, but leave the
target as UNRELEASED).
c. gbp buildpackage (make sure the package builds).
d. <Fix any problems>.
e. gbp push (this pushes pristine-tar if in use, the upstream branch, and the
new upstream branch tag, but not the debian branch because the changelog
targets UNRELEASED).
f. git push (this pushes the debian branch).
Noted! :)
4. When ready to release:
a. dch -r (this changes the target from UNRELEASED to unstable, edit to
experimental if desired).
This is same as dch --release rigth ? Si it also adds the commit messages
b. gbp buildpackage (build the package with the final changelog).
c. Upload the package.
d. gbp tag (this creates the debian/X.Y-Z tag, typically one only does this
after the package has been accepted into Debian).
e. gbp push (this pushes the debian/X.Y-Z tag).
That is use gbp push only once at the very end , right?
Note that it is possible to do all of this using a plethora of git commands.
gbp simply makes it easier.
On a side note, "gbp clone” is just like “git clone” except that it
automatically clones the pristine-tar branch (if used), the upstream branch,
and the debian branch, whereas “git clone” just clones the default branch and
requires extra commands to populate the other ones.
--
Soren Stoutner
soren@debian.org
Thank you!