[Scons-dev] Mercurial and the current SCons workflow are incompatible?

William Deegan bill at baddogconsulting.com
Mon Oct 15 14:01:09 EDT 2012


Martin,
On Oct 14, 2012, at 10:40 PM, Martin Geisler <martin at geisler.net> wrote:


> Gary Oberbrunner <garyo at oberbrunner.com> writes:

>

>> OK. Martin and everyone, thanks for your thoughts on this! I think we

>> have three possible courses of action.

>>

>> 1a: Russel, in his repo, reapplies his changes (somehow) to the current

>> tip, and we move forward from there.

>> 1b: Russel, in his repo, backs out my backout, applies some fixes, and

>> resubmits a pull request.

>>

>> Downside: repo history is ugly, and Russel's changes possibly end up in one

>> big commit, and his job is harder. Upside: not sure.

>>

>> 2: I or Bill (as maintainer) use

>> https://bitbucket.org/scons/scons/admin/strip to reset the bitbucket repo

>> back to just before the bad merge. I think this would make the new tip:

>> f461304: Merged pull request #44 (make README a ReStructuredText file)

>> (Rob M would have to resubmit pull request #46.)

>>

>> Downside: anyone who's got local changes based on tip will be confused, and

>> there's a risk of the stripped changesets coming back on push. But this is

>> all very recent and probably everyone who cares is reading this, and only a

>> few people have push privileges to bitbucket/scons/scons. Upside: nice

>> clean repo history, and Russel can just resubmit his pull request with his

>> fixes.

>>

>> 3: We take Martin's advice, and abandon the merge changeset. I'm not

>> actually sure how to do this in a bitbucket context. Martin, assuming we

>> just want to go back to f461304 (see

>> https://bitbucket.org/scons/scons/changesets), and move forward from there,

>> abandoning everything since then (all Russel's changes, which were on

>> default in his repo as well as merging Rob Managan's change 3771fa3), what

>> do we do? I'm not sure how Bitbucket will handle multiple heads -- will

>> one be the visible "main" one?

>>

>> Downside: I don't know how to do this, and it's all done on our public

>> bitbucket, so it's a bit dangerous. (Martin: your version dealt with

>> named branches; we're all on default.) Upside: agrees with Martin's

>> advice as well as a Stack Overflow question I saw.

>

> This option 3 should be the safest: you mark the head (8764000) as

> closed locally and push to Bitbucket. You can then make a new commit

> From somewhere good (f461304) and that will be it. I've done that here:

>

> https://bitbucket.org/mg/scons/changesets

>

> The closed head is hidden from 'hg heads' by default and if a branch has

> nothing but closed heads, then the branch itself is hidden from 'hg

> branches'. That's all there is to this --close-branch mechanism.


Could you list the commands to do this. (none of use are super knowledgable on mercurial (yet:))?



>

>> Opinions? I think I like #2 best, as it seems simple enough and will

>> get us back to a good state quickly. I'd go with #3 if people say it's

>> better in some way and I get good instructions.

>

> Rewriting public history all depends on how many people you expect to

> annoy... if you get 10 pull requests per week and those people would

> need to recreate some work if you strip the Bitbucket repo, well then

> you might want to avoid it. If you get 1 pull request per week and if

> most contributors read this list, well then go ahead.


Our pull request volume is usually ~1-3/week.
If we do the strip, then we would need to ask all forks to do the same if they'd already merged?

Thanks!
-Bill Deegan
Co-Manager SCons Project.



More information about the Scons-dev mailing list