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