A small update:

You are not forced to use a 'pharo-core' repository in your image folder if
you provide a path to your own clone to the working copies of the
bootstrapped packages. This way you can more easily share one local clone
of the pharo-project/pharo repository.
For the registration of your local repository use this script:

target := 'path/to/my/local/repository' asFileReference.

repository := IceRepositoryCreator new
location: target;
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).

fileTreeRepository := (MCFileTreeRepository new directory: target / #src;
yourself).
repositoryGroup := MCRepositoryGroup withRepositories: {
fileTreeRepository. MCCacheRepository uniqueInstance. }.
MCWorkingCopy allManagers
select: [ :wc | (wc repositoryGroup repositories reject: [ :repo | repo
isCache ]) isEmpty ]
thenDo: [ :wc | wc repositoryGroup: repositoryGroup ]


2017-06-26 13:14 GMT+02:00 Pavel Krivanek <pavel.kriva...@gmail.com>:

> 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: 'g...@github.com:pharo-project/pharo.git';
> location: ('pharo-core' asFileReference ensureCreateDirectory);
> subdirectory:'src';
> createRepository.
> repository checkoutBranch: 'development'.
> repository register.
>
> fork := (IceRemote name: 'myFork' url: ('g...@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
>
>

Reply via email to