main-golden to populate a release67

View: New views
7 Messages — Rating Filter:   Alert me  

main-golden to populate a release67

by Sam Halliday :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear all,

I have the latest main-golden and main-golden/contrib branches stored locally. But I want to work on release67 and release67/contrib how can I fiddle with hg to make this possible without having to pull the whole repository from scratch?

Re: main-golden to populate a release67

by Jesse Glick :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sam Halliday wrote:
> I have the latest main-golden and main-golden/contrib branches stored
> locally. But I want to work on release67 and release67/contrib how can I
> fiddle with hg to make this possible without having to pull the whole
> repository from scratch?

Getting the changesets that are only in release67 is easy; you just pull them. Discarding those changesets which are not in release67 is harder since there is no
Mercurial command for it:

1. If you have no local changesets of any value, you can convert your repo in place using 'hg strip' (enable MQ extension) but you first need to identify the earliest
changesets not in release67, and there may be several such maximally early changesets. You can probably do something like this (not tested):

while :; do r=`hg -q out -l1 --template '{node}' http://hg.netbeans.org/release67`; if [ -n "$r" ]; then hg strip $r; else break; fi; done

2. Or you can just copy up to the branching point. Consumes space for the extra working copy, but normally shares repo storage, and is not a network operation:

hg clone -r release67_base . ../release67

After doing either of these things, you will need to edit .hg/hgrc to set default/default-push, and

hg pull -u

to get the remaining branch-specific changesets. release67/contrib would be analogous.


Re: main-golden to populate a release67

by Sam Halliday :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Excellent, option 2 sounds perfect. Well except for the ridiculous amount of space that mercurial requires ;-)

Jesse Glick wrote:
Sam Halliday wrote:
> I have the latest main-golden and main-golden/contrib branches stored
> locally. But I want to work on release67 and release67/contrib how can I
> fiddle with hg to make this possible without having to pull the whole
> repository from scratch?

Getting the changesets that are only in release67 is easy; you just pull them. Discarding those changesets which are not in release67 is harder since there is no
Mercurial command for it:

1. If you have no local changesets of any value, you can convert your repo in place using 'hg strip' (enable MQ extension) but you first need to identify the earliest
changesets not in release67, and there may be several such maximally early changesets. You can probably do something like this (not tested):

while :; do r=`hg -q out -l1 --template '{node}' http://hg.netbeans.org/release67`; if [ -n "$r" ]; then hg strip $r; else break; fi; done

2. Or you can just copy up to the branching point. Consumes space for the extra working copy, but normally shares repo storage, and is not a network operation:

hg clone -r release67_base . ../release67

After doing either of these things, you will need to edit .hg/hgrc to set default/default-push, and

hg pull -u

to get the remaining branch-specific changesets. release67/contrib would be analogous.

Re: main-golden to populate a release67

by Sam Halliday :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Trouble encountered

$ hg clone -r release67_base . ../release67

requesting all changes
adding changesets
adding manifests
adding file changes
transaction abort!
rollback completed
abort: empty or missing revlog for nbbuild/dummy/.IGNOREME

Jesse Glick wrote:
Sam Halliday wrote:
> I have the latest main-golden and main-golden/contrib branches stored
> locally. But I want to work on release67 and release67/contrib how can I
> fiddle with hg to make this possible without having to pull the whole
> repository from scratch?

Getting the changesets that are only in release67 is easy; you just pull them. Discarding those changesets which are not in release67 is harder since there is no
Mercurial command for it:

1. If you have no local changesets of any value, you can convert your repo in place using 'hg strip' (enable MQ extension) but you first need to identify the earliest
changesets not in release67, and there may be several such maximally early changesets. You can probably do something like this (not tested):

while :; do r=`hg -q out -l1 --template '{node}' http://hg.netbeans.org/release67`; if [ -n "$r" ]; then hg strip $r; else break; fi; done

2. Or you can just copy up to the branching point. Consumes space for the extra working copy, but normally shares repo storage, and is not a network operation:

hg clone -r release67_base . ../release67

After doing either of these things, you will need to edit .hg/hgrc to set default/default-push, and

hg pull -u

to get the remaining branch-specific changesets. release67/contrib would be analogous.

Re: main-golden to populate a release67

by Jesse Glick :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sam Halliday wrote:
> $ hg clone -r release67_base . ../release67
>
> requesting all changes
> adding changesets
> adding manifests
> adding file changes
> transaction abort!
> rollback completed
> abort: empty or missing revlog for nbbuild/dummy/.IGNOREME

Not sure what that's about. Don't recall hearing about anyone ever seeing this error before. I don't see any problem with this file's revlog;

hg log --removed nbbuild/dummy/.IGNOREME

works normally. Are you using a recent Hg release?


Re: main-golden to populate a release67

by Sam Halliday :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hg 1.3.1 on OS X Snow Leopard.

Jesse Glick wrote:
Sam Halliday wrote:
> $ hg clone -r release67_base . ../release67
>
> requesting all changes
> adding changesets
> adding manifests
> adding file changes
> transaction abort!
> rollback completed
> abort: empty or missing revlog for nbbuild/dummy/.IGNOREME

Not sure what that's about. Don't recall hearing about anyone ever seeing this error before. I don't see any problem with this file's revlog;

hg log --removed nbbuild/dummy/.IGNOREME

works normally. Are you using a recent Hg release?

Re: main-golden to populate a release67

by Jesse Glick :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sam Halliday wrote:
> abort: empty or missing revlog for nbbuild/dummy/.IGNOREME

I also just got this trying to clone an old (pre-fncache) repo on a Mac. It seems the origin repo is missing a history file. Perhaps an issue with the rather weird Mac
filesystem and case sensitivity. Seems it can be corrected as follows (YMMV):

(echo 'AAEAAQAAAAAAAADWAAABKAAAAAAAABVB//////////+ukVJsxg/00D4xn/IBAxP0rQTsRAAAAAAA'; echo 'AAAAAAAAAHicPY9BasQwDEX3OcU/wIzTTZlSKD3EzH5wbCUx9VjGsmNy+yqhdCOE9P/70mMNAh8K';
echo 'ucplR+cWPRKXl41xh+NUbUjoNCHbhQQzF9TD82LfIpnhHpIj7Nyw2o3gVnI/5MGtwuKZuPeOzZZg'; echo 'UwXP6qU/6+Xod9hCkJZzIRHyZngccFGU1mydyiZFhfmM6AelMoToJP3fdYGnSFUnGmeTh9sELeOq';
echo 'xLuK11rz5zjq1iSqE9kkhssyBpFGMsrK/Tm1xbglfAf/dft4fztf9aT/RzHDL1TxaZM=') | perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)' >
.hg/store/data/nbbuild/dummy/._i_g_n_o_r_e_m_e.i