RFR [9] : get_source.sh should be more friendly to MQ
John Coomes
John.Coomes at oracle.com
Mon Apr 28 19:43:36 UTC 2014
Chris Hegarty (chris.hegarty at oracle.com) wrote:
> On 11/04/14 15:59, Jonathan Gibbons wrote:
> > Popping all patches beforehand is reasonable, but afterwards, it would
> > be better to reset to the patches that were previously applied than to
> > try and push all of them.
>
> Michael as requested same.
>
> > What is the behavior if you cannot qpush patches after the pull, because
> > of merge issues?
>
> The parts of the specific patch that applied cleanly remain applied,
> them that did not are written out to reject files to be analyzed. The
> remainder of the patches in that repository are not applied. get_source
> will then exit with an appropriate error exit code and you can take action.
[Sorry for resurrecting this thread, I just became aware of it--was not
subscribed.]
My workflow relies heavily on mq and (IMHO, of course) reject files
are needless tedium. So I depend heavily on rebase. In order to
avoid reject files when pulling, I do:
hg qpush -a # push everything
hg pull --rebase # pull and rebase in one step, will
# invoke merge tools if necessary
hg qpop <some_patch> # optional
If you omit the 'hg qpush -a' before pulling, it becomes tedious
(sometimes impossible) to get your merge tools invoked when you later
want to push the patches.
-John
> > On 04/11/2014 07:58 AM, Chris Hegarty wrote:
> >> Anyone using MQ for their daily development will know about this,
> >> forgetting to qpop before sync'ing up. It would be nice it get_source
> >> would pop and push patches ( only if you are using MQ ) automatically.
> >> If you do not have patch repos, then there is no change.
> >>
> >> diff --git a/get_source.sh b/get_source.sh
> >> --- a/get_source.sh
> >> +++ b/get_source.sh
> >> @@ -28,6 +28,21 @@
> >> # Get clones of all nested repositories
> >> sh ./common/bin/hgforest.sh clone "$@" || exit 1
> >>
> >> +patchdirs=`ls -d ./.hg/patches ./*/.hg/patches ./*/*/.hg/patches \
> >> + ./*/*/*/.hg/patches ./*/*/*/*/.hg/patches 2>/dev/null`
> >> +
> >> +# Pop all patches, if any, before updating
> >> +if [ "${patchdirs}" != "" ] ; then
> >> + echo "Found queue repository, qpop."
> >> + sh ./common/bin/hgforest.sh qpop -a || exit 1
> >> +fi
> >> +
> >> # Update all existing repositories to the latest sources
> >> -sh ./common/bin/hgforest.sh pull -u
> >> +sh ./common/bin/hgforest.sh pull -u || exit 1
> >>
> >> +# Push all patches, if any, after updating
> >> +if [ "${patchdirs}" != "" ] ; then
> >> + echo "Found queue repository, qpush."
> >> + sh ./common/bin/hgforest.sh qpush -a
> >> +fi
> >> +
> >>
> >> -Chris.
> >
--
John Coomes Oracle, MS USCA22-3??
john.coomes at oracle.com 4220 Network Circle
408-276-7048 Santa Clara, CA 95054-1778
*** Support GreenPeace and we'll all breathe easier. ***
More information about the build-dev
mailing list