[Pharo-users] Pharo + git workflow

Thierry Goubier thierry.goubier at gmail.com
Mon Jan 25 16:19:09 EST 2016

Le 25/01/2016 22:03, Norbert Hartl a écrit :
> Hi Thierry,
>> Am 25.01.2016 um 21:36 schrieb Thierry Goubier
>> <thierry.goubier at gmail.com>:
>> Hi Norbert,
>> Le 25/01/2016 21:17, Norbert Hartl a écrit :
>>> Hi Thierry,
>>>> Am 25.01.2016 um 20:45 schrieb Thierry Goubier
>>>> <thierry.goubier at gmail.com
>>>> <mailto:thierry.goubier at gmail.com>>:
>>>> Hi Norbert,
>>>> Le 25/01/2016 20:01, Norbert Hartl a écrit :
>>>>>> Am 25.01.2016 um 18:09 schrieb Norbert Hartl
>>>>>> <norbert at hartl.name <mailto:norbert at hartl.name>>:
>>>>>> I'm eager to try a new project with some git repositories.
>>>>>> But to be honest I don't really get it. Searching the web
>>>>>> there is lots to find but nothing actual.
>>>>>> I don't understand if it is ok to use a ConfigurationOf or
>>>>>> if it only works with a BaselineOf. And how do you specify
>>>>>> the repository in a ConfigurationOf in order to be able to
>>>>>> work locally as well as having jenkins pull everything
>>>>>> automatically? Same goes for dependent projects.
>>>>>> Are there any insights to this or pointers to an
>>>>>> up-to-date documentation?
>>>>> My own insights so far when using git:
>>>>> - I need to use BaselineOf instead of ConfigurationOf. Thus
>>>>> you cannot use Versionner anymore
>>>> You can use ConfigurationOf. BaselineOf is only there to help.
>>> Ok, good to know.
>>>>> - I need to load metacello-work from github in order to use
>>>>> bitbucket:// repositories
>>>> This should be an issue for Pharo.
>>>>> - Metacello downloads a zip file from the repository to
>>>>> install code. I have no glue how I can download things
>>>>> locally in order to work on the code
>>>> Metacello github:// and bitbucket:// urls are only for
>>>> read-only access to the packages (distribution).
>>>> Metacello install the contents of the zip into a path composed
>>>> of github-cache (or bitbucket-cache I guess), the repository
>>>> name, person name, commit id or version as a filetree
>>>> repository. You can add that repository as a filetree
>>>> repository inside Monticello if you want. But it is read-only.
>>> That is ok if you produce a deployment artefact, e.g. with
>>> jenkins. But there is either a bitbucket:// _or_ a gitfiletree://
>>> url in the baseline.
>>>> Download locally is done by either a git clone on the command
>>>> line or by a GitFileTree remote repository addition.
>>>>> - Specifying a path to access a sub-directory of the
>>>>> repository seems not to be possible
>>>> It is: url format is
>>>> [github|gitfiletree|bitbucket]://.../repo:commit/sub-directory.
It works without sub-directory. With it throws an error
>>> 'Git error: Cloning into ''st''... conq: invalid command syntax.
>>> fatal: Could not read from remote repository.
>>> Please make sure you have the correct access rights and the
>>> repository exists.
>> Oh, I see. You're using the stable version of GitFileTree in
>> Pharo4, isn't it?
> Yes.
>> I haven't pushed the changes for the url syntax in that version. So
>> the old syntax becomes:
>> gitfiletree://example.com/path/to/repo?dir=sub-directory&branch=commit
Does not work for me. Same error.

I tried in Pharo3 and that works. Strange. Can you see what is missing
from the git clone command when the error is raised? You should see a
string or an array with the command almost complete.

>> My problem is that the new url syntax is in the same package as the
>> metadata-less mode of GitFileTree, and that mode supposes a fix to
>> FileTree (a single method!). Maybe I'll switch the Pharo4
>> development version to not create metadata-less repositories.
>>>> It is also allways possible to reopen a filetree or a
>>>> gitfiletree repo on a sub-directory of the main repository...
>>>> this is how FileTree itself is tested for integration.
>>>>> - I don't know where to specify credentials because I have a
>>>>> private repo on bitbucket
>>>> If you have a ssh key, then GitFileTree will pick it up for
>>>> you.
>>> Yes, that is my preferred way, too.
>> Well, that one really had to work :)
> It is a good approach. I guess the pharo code uses the library and
> the library uses ssh. And ssh inquires ssh-agent. Exactly as it
> should IMHO.


>>>>> My conclusion is that if you don't want to use versionner and
>>>>> you have public projects on github using that stuff might
>>>>> seem feasible. If any of those is different it won't work.
>>>>> Right?
>>>> No, it works and has been working for git access to private
>>>> repositories, bitbucket included, for years... at least on
>>>> Linux ;)
>>> Ok, thanks, if the sub-directory stuff would work it would be ok
>>> to jump in. Maybe there is a way to tweak the url in the
>>> baseline. It would remove the need to install gitfiletree in a
>>> deployment artefact. We'll see.
>> In a deployment artefact, then it becomes a bit different because
>> your repo is then public.
> Why so? Because specifying the credentials is not possible?

Hum, because I don't really know to pass credentials unless by 
registering an ssh key.

Mind you, I didn't really look into that :(

>> What I did for a Pharo4 deployment was to write a context dependent
>> Makefile which uses filetree if I'm dealing with an archive of my
>> artefact, and gitfiletree if it is build from a development repo.
> To me it boils down to what you can utilize in jenkins.

Just say how you would do that with something else and a git repository, 
and I think that can be reproduced or added.


More information about the Pharo-users mailing list