Unfortunately you cannot share the repository the way you try because it always needs to be in the image working directory in a folder named 'pharo-core'. Without it the Monticello will not be able to see changes int the packages.��

On one location place Pharo 7 image and execute the first script that clones the repository and sets the remote fork.
Then into some other repository take a fresh Pharo 7 image, create symlink to the 'pharo-core' folder in the original directory and then execute the second script that only registers this repository into Iceberg and sets proper pull and push targets on it.

Cheers,
-- Pavel

2017-06-30 10:04 GMT+02:00 Stephane Ducasse <stepharo.self@gmail.com>:
So I do not understand

Now if I do

repository := IceRepositoryCreator new
location: ('/Users/ducasse/Workspace/FirstCircle/ActiveResearch/Pharo/PharoCodeBase/pharo-core'
asFileReference);
subdirectory:'src';
createRepository.
repository register.


it works but doing it twice breaks. How can I get access to the repo?
Because
fork := repository remotes detect: [ :remote | remote remoteName = #pharo ].

Does not work :(
And my github fork is name pharo I tried with 'pharo' but it failed too.


"origin (git@github.com:Ducasse/pharo.git)"


"upstream (git@github.com:pharo-project/pharo.git)"

;(




On Fri, Jun 30, 2017 at 9:56 AM, Stephane Ducasse
<stepharo.self@gmail.com> wrote:
> No I did it from a freshly donwloaded image. Pharo7.0-32bit-70f3b57.zip
>
> On Fri, Jun 30, 2017 at 9:47 AM, Pavel Krivanek
> <pavel.krivanek@gmail.com> wrote:
>> The script in section "Use already created clone" is supposed to be used by
>> a fresh Pharo 7 image. Maybe you are trying it on an image that already has
>> the repository set? Even if I tried to use the name 'pharo' instead of
>> 'myFork', the scripts work.
>>
>> Cheers,
>> -- Pavel
>>
>>
>> 2017-06-30 9:34 GMT+02:00 Stephane Ducasse <stepharo.self@gmail.com>:
>>>
>>> Hi pavel
>>>
>>> Since I want to reuse my clone. I tried the following. But I have no
>>> idea about the name of my fork so I put the one of my fork = pharo and
>>> it seems that this is what should be done.
>>>
>>> Now when I execute this script I get
>>>
>>> 'You already have an Iceberg repository
>>>
>>> So hat should I do?
>>>
>>>
>>>
>>> Use already created clone
>>> =====================
>>>
>>>
>>> repository := IceRepositoryCreator new
>>> location: ('pharo-core' asFileReference);
>>> subdirectory:'src';
>>> createRepository.
>>> repository register.
>>>
>>> fork := repository remotes detect: [ :remote | remote remoteName = #pharo
>>> ].
>>> repository pushRemote: fork.
>>> repository pullRemote: repository origin.
>>>
>>> repository checkoutBranch: 'development'.
>>> repository backend pullFrom: repository origin.
>>> repository push.
>>>
>>> repository checkoutBranch: (SystemVersion current commitHash).
>>>
>>> On Mon, Jun 26, 2017 at 1:14 PM, Pavel Krivanek
>>> <pavel.krivanek@gmail.com> wrote:
>>> > Hi,
>>> >
>>> > this mail describes how to start to send pull requests to Pharo 7 Github
>>> > repository from Pharo 7.
>>> >
>>> > Preparations
>>> > =====================
>>> >
>>> > - you need to have a Github account and set SSH keys. See
>>> > https://help.github.com/articles/connecting-to-github-with-ssh/
>>> > - create own pharo-project/pharo repository fork. Go to
>>> > https://github.com/pharo-project/pharo, click on "Fork" button and
>>> > follow
>>> > the instructions
>>> >
>>> > Get Pharo 7 image
>>> > =====================
>>> >
>>> > The CI jobs for the Pharo 7 defelopment are currently not fully set and
>>> > we
>>> > still do not publish Pharo 7 image to files.pharo.org so you cannot get
>>> > it
>>> > using zero-conf scripts. But we have a provisional CI job that
>>> > bootstraps
>>> > the Pharo 7 image.
>>> >
>>> > https://ci.inria.fr/pharo/view/7.0/job/70-Bootstrap-32bit/
>>> >
>>> > There download a file named like Pharo7.0-32bit-hash.zip and decompress
>>> > it.
>>> > Unlike Pharo 6 images, the archive contains three files. Image, changes
>>> > and
>>> > sources. In Pharo 7 you have the sources file for every bootstrapped
>>> > version. It has a commit hash in the name and it cannot be shared
>>> > between
>>> > different Pharo 7 imges, however it can be shared between images that
>>> > were
>>> > created as snapshots with the same bootstrapped image as ancestor.
>>> >
>>> > Create local clone
>>> > =====================
>>> >
>>> > You need a local clone of the Pharo repository. Because it contains a
>>> > lot of
>>> > small files, it is not a good idea to have own clone for every image.
>>> > You
>>> > can have only one and share them between images. But because of some
>>> > current
>>> > Monticello constraints you need to have the clone placed in the image
>>> > directory in a folder with name 'pharo-core'.
>>> >
>>> > In this step we will clone the Pharo repository from pharo-project/pharo
>>> > Github repository and add your fork as default pull target. We will
>>> > update
>>> > your fork repository to contain all latest commits from the Pharo
>>> > repository
>>> > in the branch named 'development'. For latest stable version (Pharo 6)
>>> > we
>>> > use the master branch.
>>> > In the end we will checkout the repository to a particular commit from
>>> > which
>>> > the downloaded Pharo 7 image was bootstrapped. Imagine that you have a
>>> > Pharo
>>> > 7 image that is several days old and the development branch has already
>>> > some
>>> > commits that change code. If you would take this older image, checkout
>>> > to
>>> > the development branch and then do your commit, your would revert all
>>> > changes done in not-loaded commits. The other option is to update your
>>> > image
>>> > to correspond to the repository latest commit which requires packages
>>> > reloading.
>>> > If you checkout to a particular commit, you are in detached HEAD state.
>>> > In
>>> > this state you cannot do commits directly. You need to firstly create
>>> > new a
>>> > new branch which we will do anyway.
>>> >
>>> > Evaluate the following code. This functionality will be later direct
>>> > part of
>>> > Iceberg UI. Do not forget to change the user name.
>>> >
>>> > username := 'YOUR-USER-NAME'.
>>> > repository := IceRepositoryCreator new
>>> > url: 'git@github.com:pharo-project/pharo.git';
>>> > location: ('pharo-core' asFileReference ensureCreateDirectory);
>>> > subdirectory:'src';
>>> > createRepository.
>>> > repository checkoutBranch: 'development'.
>>> > repository register.
>>> >
>>> > fork := (IceRemote name: 'myFork' url: ('git@github.com:{1}/pharo.git'
>>> > format: {username})).
>>> > repository addRemote: fork.
>>> > repository pushRemote: fork.
>>> > repository pullRemote: repository origin.
>>> >
>>> > "update fork"
>>> > repository backend pullFrom: repository origin. "use this low-level form
>>> > to
>>> > prevent packages reloading"
>>> > repository push.
>>> >
>>> > "checkout to the commit from which the image was bootstrapped"
>>> > repository checkoutBranch: (SystemVersion current commitHash).
>>> >
>>> > Use already created clone
>>> > =====================
>>> >
>>> > This is alternative to the previous step. Let's suppose that you already
>>> > have your local clone. You take some Pharo 7 image and you want to
>>> > create
>>> > commits. Then you need to create a symlink or move/copy the repository
>>> > into
>>> > your image directory. Remember, it must be named pharo-core (we do not
>>> > use
>>> > the name 'pharo' to avoid collision with VM executable).
>>> >
>>> > In this step we will register an existing Pharo repository clone, set
>>> > your
>>> > fork as the push target, update your fork and then switch to the
>>> > particular
>>> > commit.
>>> >
>>> > repository := IceRepositoryCreator new
>>> > location: ('pharo-core' asFileReference);
>>> > subdirectory:'src';
>>> > createRepository.
>>> > repository register.
>>> >
>>> > fork := repository remotes detect: [ :remote | remote remoteName =
>>> > #myFork
>>> > ].
>>> > repository pushRemote: fork.
>>> > repository pullRemote: repository origin.
>>> >
>>> > repository checkoutBranch: 'development'.
>>> > repository backend pullFrom: repository origin.
>>> > repository push.
>>> >
>>> > repository checkoutBranch: (SystemVersion current commitHash).
>>> >
>>> > Issue processing
>>> > =====================
>>> >
>>> > - create new case on FogBugz to get the issue number
>>> > - open Iceberg and from the context menu on the 'pharo' repository do:
>>> > Pharo
>>> > - Create new branch from FogBugz issue, enter the issue ID and it will
>>> > fill
>>> > the full branch name for you
>>> > - create your changes (you can do it before the creation of the branch
>>> > too)
>>> > - commit and push your changes in Iceberg, this way you will commit your
>>> > branch to your fork repository. Remember that the Iceberg commit window
>>> > has
>>> > two buttons, one for local commit, the second for commit with immediate
>>> > push. They can be very long because they contain the full branch (issue)
>>> > name
>>> > - in Iceberg in the 'pharo' repository context menu do: Pharo - Create
>>> > pull
>>> > request, fill your
>>> > - fill your Github credentials
>>> > - leave the PR title, comment is not required, check the pull request
>>> > head
>>> > and base. The base MUST be pharo-project/pharo development. Create the
>>> > pull
>>> > requests
>>> > - go to https://github.com/pharo-project/pharo/pulls, check your pull
>>> > requests and put URL of it into the issue record on FogBugz (as a
>>> > comment).
>>> > Resolve the issue as Fix review needed
>>> >
>>> > Cheers,
>>> > -- Pavel
>>> >
>>>
>>