Pharo 7 provisional HOWTO
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
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ? Regards, -- Serge Stinckwich UCN & UMI UMMISCO 209 (IRD/UPMC) Every DSL ends up being Smalltalk http://www.doesnotunderstand.org/
On 27 Jun 2017, at 15:57, Serge Stinckwich <serge.stinckwich@gmail.com> wrote:
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ?
it should not. same as before with SLICEs, there was no slice without issue :) Esteban
Regards, -- Serge Stinckwich UCN & UMI UMMISCO 209 (IRD/UPMC) Every DSL ends up being Smalltalk http://www.doesnotunderstand.org/
2017-06-27 15:57 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com>:
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ?
Yes, at least for code changes we would like to keep this relation. If it is a really trivial change in readme or something like that, we can accept no related issue record. Please prefer to comment the issues instead of PRs directly to have all information at one place. Cheers, -- Pavel
Regards, -- Serge Stinckwich UCN & UMI UMMISCO 209 (IRD/UPMC) Every DSL ends up being Smalltalk http://www.doesnotunderstand.org/
On Tue, Jun 27, 2017 at 3:10 PM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
2017-06-27 15:57 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com>:
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ?
Yes, at least for code changes we would like to keep this relation. If it is a really trivial change in readme or something like that, we can accept no related issue record. Please prefer to comment the issues instead of PRs directly to have all information at one place.
Thank you Pavel for the explanation. Maybe in the future, it will make sense to put everything in the PR and use github issues. You will use CI travis builds for all PR ? Regards, -- Serge Stinckwich UCN & UMI UMMISCO 209 (IRD/UPMC) Every DSL ends up being Smalltalk http://www.doesnotunderstand.org/
2017-06-27 16:17 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com>:
On Tue, Jun 27, 2017 at 3:10 PM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
2017-06-27 15:57 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com :
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ?
Yes, at least for code changes we would like to keep this relation. If it is a really trivial change in readme or something like that, we can accept no related issue record. Please prefer to comment the issues instead of PRs directly to have all information at one place.
Thank you Pavel for the explanation.
Maybe in the future, it will make sense to put everything in the PR and use github issues. You will use CI travis builds for all PR ?
For now we will use FogBugz because it has a lot of nice features and good API. Maybe we will switch it in future but now we should not change too many things at once :-) For several reasons we now prefer to use own infrastructure for checking of PRs (mainly because of MacOS issues on Travis). But again, it can be changed in future. Cheers, -- Pavel Regards,
-- Serge Stinckwich UCN & UMI UMMISCO 209 (IRD/UPMC) Every DSL ends up being Smalltalk http://www.doesnotunderstand.org/
On Tue, Jun 27, 2017 at 10:35 PM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
2017-06-27 16:17 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com>:
On Tue, Jun 27, 2017 at 3:10 PM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
2017-06-27 15:57 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com :
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ?
Yes, at least for code changes we would like to keep this relation. If it is a really trivial change in readme or something like that, we can accept no related issue record. Please prefer to comment the issues instead of PRs directly to have all information at one place.
Thank you Pavel for the explanation.
Maybe in the future, it will make sense to put everything in the PR and use github issues. You will use CI travis builds for all PR ?
For now we will use FogBugz because it has a lot of nice features and good API. Maybe we will switch it in future but now we should not change too many things at once :-) For several reasons we now prefer to use own infrastructure for checking of PRs (mainly because of MacOS issues on Travis). But again, it can be changed in future.
It would be interesting to see how this might fit in with our workflow... https://blog.fogcreek.com/fogbugz-github-integration/ cheers -ben
El 28-06-2017, a las 02:57, Ben Coman <btc@openinworld.com> escribió:
On Tue, Jun 27, 2017 at 10:35 PM, Pavel Krivanek <pavel.krivanek@gmail.com <mailto:pavel.krivanek@gmail.com>> wrote:
2017-06-27 16:17 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com <mailto:serge.stinckwich@gmail.com>>: On Tue, Jun 27, 2017 at 3:10 PM, Pavel Krivanek <pavel.krivanek@gmail.com <mailto:pavel.krivanek@gmail.com>> wrote:
2017-06-27 15:57 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com <mailto:serge.stinckwich@gmail.com>>:
On Mon, Jun 26, 2017 at 12:14 PM, Pavel Krivanek <pavel.krivanek@gmail.com <mailto:pavel.krivanek@gmail.com>> wrote:
Hi,
this mail describes how to start to send pull requests to Pharo 7 Github repository from Pharo 7.
Thank you for the great explanation Pavel.
Preparations =====================
- you need to have a Github account and set SSH keys. See https://help.github.com/articles/connecting-to-github-with-ssh/ <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 <https://github.com/pharo-project/pharo>, click on "Fork" button and follow the instructions
[ ... ]
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 <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
It means, there is no PR without a corresponding FogBugz issue ?
Yes, at least for code changes we would like to keep this relation. If it is a really trivial change in readme or something like that, we can accept no related issue record. Please prefer to comment the issues instead of PRs directly to have all information at one place.
Thank you Pavel for the explanation.
Maybe in the future, it will make sense to put everything in the PR and use github issues. You will use CI travis builds for all PR ?
For now we will use FogBugz because it has a lot of nice features and good API. Maybe we will switch it in future but now we should not change too many things at once :-) For several reasons we now prefer to use own infrastructure for checking of PRs (mainly because of MacOS issues on Travis). But again, it can be changed in future.
It would be interesting to see how this might fit in with our workflow... https://blog.fogcreek.com/fogbugz-github-integration/ <https://blog.fogcreek.com/fogbugz-github-integration/>
What is the benefit of the integration? I do not understand it from the given link. Thanks! Juraj
cheers -ben
On Wed, Jun 28, 2017 at 3:46 PM, Juraj Kubelka <juraj.kubelka@icloud.com> wrote:
El 28-06-2017, a las 02:57, Ben Coman <btc@openinworld.com> escribió:
On Tue, Jun 27, 2017 at 10:35 PM, Pavel Krivanek <pavel.krivanek@gmail.com
wrote:
2017-06-27 16:17 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com>:
On Tue, Jun 27, 2017 at 3:10 PM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
2017-06-27 15:57 GMT+02:00 Serge Stinckwich <
serge.stinckwich@gmail.com>:
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ?
Yes, at least for code changes we would like to keep this relation. If it is a really trivial change in readme or something like that, we can accept no related issue record. Please prefer to comment the issues instead of PRs directly to have all information at one place.
Thank you Pavel for the explanation.
Maybe in the future, it will make sense to put everything in the PR and use github issues. You will use CI travis builds for all PR ?
For now we will use FogBugz because it has a lot of nice features and good API. Maybe we will switch it in future but now we should not change too many things at once :-) For several reasons we now prefer to use own infrastructure for checking of PRs (mainly because of MacOS issues on Travis). But again, it can be changed in future.
It would be interesting to see how this might fit in with our workflow... https://blog.fogcreek.com/fogbugz-github-integration/
What is the benefit of the integration? I do not understand it from the given link.
When you submit a PR on github, Fogbugz is automatically updated with a link to the PR. Presumably this makes it easier for people reviewing cases in Fogbugz to identify the slice to test. This is a better link... https://blog.fogcreek.com/improved-github-integration-automatically-create-b... cheers -ben
Hi all, Just to be clear, in Pharo 7, if I want to get some code integrated: - I *have to* use the pull request process described by Pavel OR - I *can* use the pull request process, but I can also use the old slice monticello process ? What is the answer to the first question now, and what will be the answer of this question in 6 months from now ? Thanks On Wed, Jun 28, 2017 at 3:42 PM, Ben Coman <btc@openinworld.com> wrote:
On Wed, Jun 28, 2017 at 3:46 PM, Juraj Kubelka <juraj.kubelka@icloud.com> wrote:
El 28-06-2017, a las 02:57, Ben Coman <btc@openinworld.com> escribió:
On Tue, Jun 27, 2017 at 10:35 PM, Pavel Krivanek < pavel.krivanek@gmail.com> wrote:
2017-06-27 16:17 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com> :
On Tue, Jun 27, 2017 at 3:10 PM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
2017-06-27 15:57 GMT+02:00 Serge Stinckwich <
serge.stinckwich@gmail.com>:
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ?
Yes, at least for code changes we would like to keep this relation. If it is a really trivial change in readme or something like that, we can accept no related issue record. Please prefer to comment the issues instead of PRs directly to have all information at one place.
Thank you Pavel for the explanation.
Maybe in the future, it will make sense to put everything in the PR and use github issues. You will use CI travis builds for all PR ?
For now we will use FogBugz because it has a lot of nice features and good API. Maybe we will switch it in future but now we should not change too many things at once :-) For several reasons we now prefer to use own infrastructure for checking of PRs (mainly because of MacOS issues on Travis). But again, it can be changed in future.
It would be interesting to see how this might fit in with our workflow... https://blog.fogcreek.com/fogbugz-github-integration/
What is the benefit of the integration? I do not understand it from the given link.
When you submit a PR on github, Fogbugz is automatically updated with a link to the PR. Presumably this makes it easier for people reviewing cases in Fogbugz to identify the slice to test. This is a better link... https://blog.fogcreek.com/improved-github-integration- automatically-create-bug-events-with-commits/
cheers -ben
2017-06-28 17:06 GMT+02:00 Clément Bera <bera.clement@gmail.com>:
Hi all,
Just to be clear, in Pharo 7, if I want to get some code integrated: - I *have to* use the pull request process described by Pavel OR - I *can* use the pull request process, but I can also use the old slice monticello process ?
What is the answer to the first question now, and what will be the answer of this question in 6 months from now ?
You should use the pull request process. It is possible to create a standard slice BUT it must be done from Pharo 6 and then sent into Pharo60Inbox. And then you need to wait until somebody converts this slice to pull request. That means that it will be harder and harder to contribute this way because the code-base is moving. No slice will be integrated into Pharo 7 with the old process directly. Cheers, -- Pavel
Thanks
On Wed, Jun 28, 2017 at 3:42 PM, Ben Coman <btc@openinworld.com> wrote:
On Wed, Jun 28, 2017 at 3:46 PM, Juraj Kubelka <juraj.kubelka@icloud.com> wrote:
El 28-06-2017, a las 02:57, Ben Coman <btc@openinworld.com> escribió:
On Tue, Jun 27, 2017 at 10:35 PM, Pavel Krivanek < pavel.krivanek@gmail.com> wrote:
2017-06-27 16:17 GMT+02:00 Serge Stinckwich <serge.stinckwich@gmail.com
:
On Tue, Jun 27, 2017 at 3:10 PM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
2017-06-27 15:57 GMT+02:00 Serge Stinckwich <
serge.stinckwich@gmail.com>:
On Mon, Jun 26, 2017 at 12: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.
Thank you for the great explanation Pavel.
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
[ ... ]
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
It means, there is no PR without a corresponding FogBugz issue ?
Yes, at least for code changes we would like to keep this relation. If it is a really trivial change in readme or something like that, we can accept no related issue record. Please prefer to comment the issues instead of PRs directly to have all information at one place.
Thank you Pavel for the explanation.
Maybe in the future, it will make sense to put everything in the PR and use github issues. You will use CI travis builds for all PR ?
For now we will use FogBugz because it has a lot of nice features and good API. Maybe we will switch it in future but now we should not change too many things at once :-) For several reasons we now prefer to use own infrastructure for checking of PRs (mainly because of MacOS issues on Travis). But again, it can be changed in future.
It would be interesting to see how this might fit in with our workflow... https://blog.fogcreek.com/fogbugz-github-integration/
What is the benefit of the integration? I do not understand it from the given link.
When you submit a PR on github, Fogbugz is automatically updated with a link to the PR. Presumably this makes it easier for people reviewing cases in Fogbugz to identify the slice to test. This is a better link... https://blog.fogcreek.com/improved-github-integration-automa tically-create-bug-events-with-commits/
cheers -ben
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
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
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
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
DoIt ^ repository remotes detect: [ :remote | self halt. remote remoteName = 'pharo' ] remote remoteName returns 'origin' and not the name of the fork so what is upstream? Pharo on github origin? the one local? Stef On Fri, Jun 30, 2017 at 10:04 AM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
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
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)"
;(
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
On Fri, Jun 30, 2017 at 9:56 AM, Stephane Ducasse <stepharo.self@gmail.com> wrote: 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
Ok I try to understand. I already cloned the github repo and I do not want to be forced to download all these small files all the time. I want one place with all the forked code one and only one. I will try to create a simlink and try again. Tx Stef On Fri, Jun 30, 2017 at 10:26 AM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
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
I do not get why repository := IceRepositoryCreator new location: ('/Users/ducasse/Workspace/FirstCircle/ActiveResearch/Pharo/PharoCodeBase/pharo-core' asFileReference); is not working and repository := IceRepositoryCreator new location: ('pharo-core' asFileReference); + simlink would be working. On Fri, Jun 30, 2017 at 10:46 AM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
Ok I try to understand. I already cloned the github repo and I do not want to be forced to download all these small files all the time. I want one place with all the forked code one and only one.
I will try to create a simlink and try again. Tx
Stef
On Fri, Jun 30, 2017 at 10:26 AM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
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
I did a simlink total 124088 -rw-rw-r-- 1 ducasse admin 381 Jun 30 10:18 Pharo7.0-32bit-70f3b57.changes -rw-rw-r-- 1 ducasse admin 29740016 Jun 29 13:38 Pharo7.0-32bit-70f3b57.image -rw-rw-r-- 1 ducasse admin 33711804 Jun 29 13:37 Pharo7.0-32bit-70f3b57.sources -rw-r--r--@ 1 ducasse admin 65620 Jun 30 10:05 PharoDebug.log lrwxr-xr-x 1 ducasse admin 33 Jun 30 10:45 pharo-core@ -> ../../../PharoCodeBase/pharo-core drwxr-xr-x 4 ducasse admin 136 Jun 30 09:59 pharo-local/ But now I get DNU url :( 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). So I will wait that the system arrives to a state I can work with. Stef On Fri, Jun 30, 2017 at 10:48 AM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
I do not get why
repository := IceRepositoryCreator new location: ('/Users/ducasse/Workspace/FirstCircle/ActiveResearch/Pharo/PharoCodeBase/pharo-core' asFileReference);
is not working and
repository := IceRepositoryCreator new location: ('pharo-core' asFileReference);
+ simlink would be working.
On Fri, Jun 30, 2017 at 10:46 AM, Stephane Ducasse <stepharo.self@gmail.com> wrote:
Ok I try to understand. I already cloned the github repo and I do not want to be forced to download all these small files all the time. I want one place with all the forked code one and only one.
I will try to create a simlink and try again. Tx
Stef
On Fri, Jun 30, 2017 at 10:26 AM, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
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
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.krivanek@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: '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
This is actually fun. For pharo contributions I just used Iceberg ui without scripting anything and it works absolutely fine. Iceberg has a default location for cloned repositories, and it puts pharo there too Uko
On 4 Jul 2017, at 11:52, Pavel Krivanek <pavel.krivanek@gmail.com <mailto:pavel.krivanek@gmail.com>> wrote:
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.krivanek@gmail.com <mailto:pavel.krivanek@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/ <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 <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 <http://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/ <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 <mailto: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 <mailto: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 <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
Tx Uko. We should improve. On Tue, Jul 11, 2017 at 7:07 PM, Yuriy Tymchuk <yuriy.tymchuk@me.com> wrote:
This is actually fun. For pharo contributions I just used Iceberg ui without scripting anything and it works absolutely fine. Iceberg has a default location for cloned repositories, and it puts pharo there too
Uko
On 4 Jul 2017, at 11:52, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
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.krivanek@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: '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
On 26. Jun 2017, at 19:14, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
Hi,
Hey! thank you for this HOWTO!
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.
I am using "pharo-mac-stable.zip" and "Pharo-7.0.0-alpha.build.27.sha.c1c8991.arch.32bit.zip" and followed your howto and run into various Iceberg issues. Where would be the best place to report them? Open Iceberg, selech "Pharo", click on Branches => Error LGit_GIT_ERROR: Reference 'HEAD' is not a local branch. Open Iceberg, double click on "Pharo" => DNU, #/ was sent to nil UndefinedObject(Object)>>doesNotUnderstand: #/ ... IceSavedPackage repository location seems to return nil. Are these known? Fogbugz? Github issues of Iceberg? cheers holger
2017-08-12 11:36 GMT+02:00 Holger Freyther <holger@freyther.de>:
On 26. Jun 2017, at 19:14, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
Hi,
Hey!
thank you for this HOWTO!
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.
I am using "pharo-mac-stable.zip" and "Pharo-7.0.0-alpha.build.27.sha.c1c8991.arch.32bit.zip" and followed your howto and run into various Iceberg issues. Where would be the best place to report them?
Open Iceberg, selech "Pharo", click on Branches => Error LGit_GIT_ERROR: Reference 'HEAD' is not a local branch.
Open Iceberg, double click on "Pharo" => DNU, #/ was sent to nil UndefinedObject(Object)>>doesNotUnderstand: #/ ... IceSavedPackage repository location seems to return nil.
Are these known? Fogbugz? Github issues of Iceberg?
yes, because this HOWTO is already obsolete. See: https://github.com/guillep/PharoIntegrationProcess/wiki/Pharo-Development-Pr... -- Pavel
cheers holger
On 12. Aug 2017, at 17:47, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
yes, because this HOWTO is already obsolete. See:
https://github.com/guillep/PharoIntegrationProcess/wiki/Pharo-Development-Pr...
Ah okay. The hidden system repository explains why the IceSavedPackage didn't point to the repository I had created/set-up but to something without a location:. thank you holger
Why is that document in the account of guille? Norbert
Am 12.08.2017 um 11:47 schrieb Pavel Krivanek <pavel.krivanek@gmail.com>:
2017-08-12 11:36 GMT+02:00 Holger Freyther <holger@freyther.de>:
On 26. Jun 2017, at 19:14, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
Hi,
Hey!
thank you for this HOWTO!
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.
I am using "pharo-mac-stable.zip" and "Pharo-7.0.0-alpha.build.27.sha.c1c8991.arch.32bit.zip" and followed your howto and run into various Iceberg issues. Where would be the best place to report them?
Open Iceberg, selech "Pharo", click on Branches => Error LGit_GIT_ERROR: Reference 'HEAD' is not a local branch.
Open Iceberg, double click on "Pharo" => DNU, #/ was sent to nil UndefinedObject(Object)>>doesNotUnderstand: #/ ... IceSavedPackage repository location seems to return nil.
Are these known? Fogbugz? Github issues of Iceberg?
yes, because this HOWTO is already obsolete. See:
https://github.com/guillep/PharoIntegrationProcess/wiki/Pharo-Development-Pr...
-- Pavel
cheers holger
Because he wrote it but indeed it should be migrated to Pharo. On Thu, Aug 24, 2017 at 11:12 AM, Norbert Hartl <norbert@hartl.name> wrote:
Why is that document in the account of guille?
Norbert
Am 12.08.2017 um 11:47 schrieb Pavel Krivanek <pavel.krivanek@gmail.com>:
2017-08-12 11:36 GMT+02:00 Holger Freyther <holger@freyther.de>:
On 26. Jun 2017, at 19:14, Pavel Krivanek <pavel.krivanek@gmail.com> wrote:
Hi,
Hey!
thank you for this HOWTO!
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.
I am using "pharo-mac-stable.zip" and "Pharo-7.0.0-alpha.build.27.sha.c1c8991.arch.32bit.zip" and followed your howto and run into various Iceberg issues. Where would be the best place to report them?
Open Iceberg, selech "Pharo", click on Branches => Error LGit_GIT_ERROR: Reference 'HEAD' is not a local branch.
Open Iceberg, double click on "Pharo" => DNU, #/ was sent to nil UndefinedObject(Object)>>doesNotUnderstand: #/ ... IceSavedPackage repository location seems to return nil.
Are these known? Fogbugz? Github issues of Iceberg?
yes, because this HOWTO is already obsolete. See:
https://github.com/guillep/PharoIntegrationProcess/wiki/Pharo-Development-Pr...
-- Pavel
cheers holger
participants (10)
-
Ben Coman -
Clément Bera -
Esteban Lorenzano -
Holger Freyther -
Juraj Kubelka -
Norbert Hartl -
Pavel Krivanek -
Serge Stinckwich -
Stephane Ducasse -
Yuriy Tymchuk