John, Mike, Thanks for your comments. I’ve been using rebase for a while now and it certainly makes resolving conflicts in patches much easier, as opposed to manually inspecting reject files. My workflow is as per your suggestion,
bash common/bin/hgforest.sh push -a bash common/bin/hgforest.sh pull —rebase Give that not everyone wants to operate this way, using rebase, I’m not sure what, if anything, can be added to get_source.sh to support this. Maybe I just need to omit get_source.sh from my workflow after the initial clone? -Chris. On 28 Apr 2014, at 20:43, John Coomes <john.coo...@oracle.com> wrote: > Chris Hegarty (chris.hega...@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.coo...@oracle.com 4220 Network Circle > 408-276-7048 Santa Clara, CA 95054-1778 > *** Support GreenPeace and we'll all breathe easier. ***