2017-06-30 17:58 GMT+02:00 Ben Coman <b...@openinworld.com>: > > > On Fri, Jun 30, 2017 at 4:28 PM, Pavel Krivanek <pavel.kriva...@gmail.com> > wrote: > >> Hi, >> >> the reviewing of the pull requests is currently not as easy as we would >> like to have. For simple changes it should be enough to go to the pull >> requests list (https://github.com/pharo-project/pharo/pulls) and review >> the changes from the GitHub web interface. In case that the PR passes tests >> and bootstrapping, it should be fine. >> >> However if you want to play with an image that contains the PR code, your >> options are more complicated. The basic and the most clean one is to >> bootstrap from the repository with the PR applied on it. But it takes A LOT >> of time (over 20 mins). You can use this script that you will run inside >> the clone. >> >> set -e >> >> export PR=122 >> export BRANCH=development >> >> export PHARO_VERSION=60 >> export BOOTSTRAP_ARCH=32 >> >> git fetch origin $BRANCH >> git fetch origin refs/pull/$PR/head >> git checkout -b pullrequest FETCH_HEAD >> git merge --no-edit origin/$BRANCH >> #git diff origin/$BRANCH..pullrequest > pullrequest.diff >> >> wget -O - get.pharo.org/${PHARO_VERSION}+vm >> <http://get.pharo.org/$%7BPHARO_VERSION%7D+vm> | bash >> >> ./pharo Pharo.image --no-default-preferences ./bootstrap/scripts/ >> prepare_image.st --save --quit >> ./pharo Pharo.image --no-default-preferences ./bootstrap/scripts/ >> bootstrap.st --ARCH=${BOOTSTRAP_ARCH} --quit >> bash ./bootstrap/scripts/build.sh >> >> The other option is to take existing Pharo 7 image, have >> pharo-project/pharo clone next to it in a folder named 'pharo-core' and >> then create a new branch with the merged pull request. Currently it cannot >> be done from Iceberg directly so you need to use Git. You can use this >> script: >> >> set -e >> >> PR=119 >> COMMIT=2225314a7404c9e00fe71e70d41fc59d4ba78e2d >> > > where does this commit hash come from? > > as described, SystemVersion current commitHash
> >> cd pharo-core >> >> git fetch origin refs/pull/$PR/head >> git checkout -b pr$PR-local FETCH_HEAD >> git checkout $COMMIT >> git checkout -b pr$PR-merged >> git merge --no-edit pr$PR-local >> #git diff $COMMIT...pr$PR-merged > pr$PR.diff >> > > Sorry I haven't the time to test this, but maybe it would do the same...?? > git fetch origin refs/pull/$PR/merge:pr$PR-merged > #git diff $COMMIT...pr$merged > > https://coderwall.com/p/z5rkga/github-checkout-a-pull-request-as-a-branch > > cheers -ben > ok, I'll try. thanks -- Pavel > > >> Set the pull request name to the variable PR and the image commmit hash >> to the variable named COMMIT. It can be obtained by "SystemVersion current >> commitHash". As the result you are in a merged branch created for this pull >> requests (e.g. pr122-merged) and you need to reload all packages. It can be >> done from Iceberg where you will need to confirm several dialogs, or by >> this script: >> >> repo := MCFileTreeRepository new >> directory: './pharo-core/src' asFileReference; >> yourself. >> >> versions := OrderedCollection new. >> repo allFileNames do: [ :packageName | >> | wc | >> wc := MCWorkingCopy allManagers detect: [ :each | each packageName = >> (packageName withoutSuffix: '.package') ] ifNone: [nil]. >> wc ifNotNil: [ >> [(repo loadVersionFromFileNamed: packageName) load] on: >> MCMergeOrLoadWarning do: [:w | w resume ] ]] displayingProgress: [:e | e ]. >> >> The other option is to let display the classical Monticello merging >> window. For that you can use this script: >> >> repo := MCFileTreeRepository new >> directory: './pharo-core/src' asFileReference; >> yourself. >> >> versions := OrderedCollection new. >> repo allFileNames do: [ :packageName | >> | wc | >> wc := MCWorkingCopy allManagers detect: [ :each | each packageName = >> (packageName withoutSuffix: '.package') ] ifNone: [nil]. >> wc ifNotNil: [ >> versions add: (repo loadVersionFromFileNamed: packageName) ]] >> displayingProgress: [:e | e ]. >> >> merger := MCVersionMerger new. >> versions do: [:each | merger addVersion: each ]. >> merger mergeWithNameLike: 'merged'. >> >> merger gatherChanges. >> >> (merger instVarNamed: #records) do: [ :each | each mergePatch operations >> do: [:operation | operation chooseRemote.]]. >> >> (merger instVarNamed: #merger) operations do: #chooseRemote. >> >> merger resolveConflicts. >> >> However I have seen cases where for example the PR deleted some class and >> the MC merging tool was not able to see this change. So be careful with >> this approach. We need to look at that. >> >> Do not look on this mail as something final. It's only a hint for brave >> sprinters. To find a good workflow how properly review our PR should be one >> of our priorities. >> >> Cheers, >> -- Pavel >> > >