[Qt-creator] [FYI] new git-gpush features, a.k.a. the smart way of pushing to gerrit

Orgad Shaneh orgads at gmail.com
Wed Oct 22 11:57:49 CEST 2014

On Wed, Oct 22, 2014 at 11:32 AM, Oswald Buddenhagen <
oswald.buddenhagen at digia.com> wrote:

> we are in the middle of the bugfixing week, so everyone is wrangling
> half a dozen mostly unrelated changes at the same time. the perfect
> time to plug the awesomely improved gpush!
> from the manual:
>     Prior to actually pushing any commits, gpush will temporarily rebase
>     them onto a new base. This has the advantage that you can keep many
>     unrelated "series" in your local branch without creating spurious
>     dependencies on Gerrit, effectively pretending that you have a separate
>     branch for every series. Furthermore, gpush will keep the base of
>     subsequent pushes of the same series constant (unless told otherwise),
>     which means that you can closely track the upstream branch without
>     pushing needless rebases to Gerrit (and thus breaking inter-patchset
>     diffs).
> exactly the thing you need right now, huh?
> quickstart:
> # RTFM
> $ git gpush -h
> $ git gpick -h
> $ git gpull -h
> # get all your pending changes on the current branch, in case you don't
> # do this anyway:
> $ git cherry-pick ...
> # bootstrap the thing:
> $ git gpick --check
> # actually push two changes. yup, you can use change-ids:
> $ git gpush I435fa988e: -2
> # re-push the series ending at HEAD:
> $ git gpush
> # (now, that was easy ^^)
> # get stuff from somebody else:
> $ git gpick +I987ac23f1
> # no need to worry about accidentally re-pushing it any more!
> # update your local copy after somebody has been messing with your
> # change (gpush will tell you about it, so you won't overwrite the
> # changes accidentally):
> $ git gpick I9ce6d9e7a3
> # pull/rebase your local series:
> $ git gpull
> magic!
> you only need to save the attached three scripts (simply overwrite your
> local checkout of qtrepotools for the time being) to get started.
> this stuff is not tested under windows, but there shouldn't be any major
> problems. just make sure that you have ActivePerl *before* msys perl in
> your PATH (i have a hunch that it won't work otherwise ^^).
> feel free to complain if something doesn't work for you or you are
> missing some important feature.
> if you hate the very idea of the dynamic rebasing, put your fatwa on
> thiago, as it was his idea. though i don't think he will recognize much
> of his code. :D
> oh, btw, i'm looking for reviewers for the whole thing. don't worry -
> it's less than 2500 LOC of perl spread over 30 changes.
> get started here: https://codereview.qt-project.org/89097
> on a completely unrelated note, we deployed a bugfixed version of
> gerrit. the most visible change is the fixed keyboard navigation in the
> one-page diff view. the other fixes happened mostly behind the scenes.
> one consequence of the upgrade is that i can (and will) actually run the
> long promised auto-abandoning of de-facto abandoned changes quite
> soonish.
> _______________________________________________
> Qt-creator mailing list
> Qt-creator at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qt-creator

Great work!

An alternative to constant rebasing of the current branch is using *a
separate clone* for pushing. This clone can share objects with the real
working clone (via .git/objects/info/alternates), then you can easily git
checkout and git cherry-pick the changes you want instead of in-place

- Orgad
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qt-creator/attachments/20141022/2b0117cb/attachment.html>

More information about the Qt-creator mailing list