status of Git experiments

11 views
Skip to first unread message

Nick Ager

unread,
Feb 23, 2012, 10:16:15 AM2/23/12
to Metacello
Hi Dale,

What is the state of your Git experimentation? We've a UK Smalltalk
meeting on Monday and Frank and I thought it would be interesting to
demo your Git integration and solicit feedback.

Looking at the how other open-source projects enable collaboration
through forking and GitHub pull requests [1], it feels like we're
missing a trick by not being able to use such infrastructure if we
choose... so we're both keen to look at anything you have.

Cheers

Nick

[1] https://github.com/features/projects/codereview

Dale Henrichs

unread,
Feb 23, 2012, 2:03:01 PM2/23/12
to meta...@googlegroups.com
Nick,

Glad you asked ... I'm going full bore on development of the project.

I've got a Sample project[1] up on GitHub where I showcase the current thinking on overall project structure. I've published a gist, that shows the current thinking on the directory structure for a project[2], another gist that shows examples of the Metacello scripting API[3], and yet another gist lists my basic assumptions about using git for Smalltalk source management[5].

I have been using github as the repository of record for the development of this project. I've pushed the Metacello repository[6] up to github and have been actively using it, and I encourage you to follow the project if you are interested in watching the detailed progress:).

The filetree project[7] is where the Monticello package to disk mappings is being managed. To bootstrap my work follow the instructions in this gist[8]. Note that the working projects metacello and filetree use a different structure than the one that I'm proposing (the repository directory is the root of the Monticello repository).

I think it would be very interesting if you and Frank used github to put together your demo. The HEAD of the Sample project cannot be loaded using filetree as I munged it to show off what I would like the structure to be, but there are earlier versions of of the project (in particular I've used a tag to mark the version that can be loaded and played with:

"download version of 1.2 the sample project, i.e., download from github, but don't load Sample project"
Metacello new
project: 'Sample';
repository: 'github://dalehenrich/sample:1.2/repository';
get.

"load version 1.2 of the sample project, i.e., download from github and load sample project code into image"
Metacello new
project: 'Sample';
repository: 'github://dalehenrich/sample:1.2/repository';
load.

We could collaborate on a set of gists for the demo and I can provide patches that fix any bugs you might hit ... perhaps you should fork the metacello, sample and filetree projects?

You can also show off cloning of the sample repository, where you can save your work to the git repository then commit and push your work back up to your github fork ...

I have not hooked up the git work of Max Leske and Camillo Bruni, so you need to sue the command line for doing the git operations ...

Dale

[1] https://github.com/dalehenrich/sample
[2] https://gist.github.com/1892114
[3] https://gist.github.com/1892052
[4] https://github.com/dalehenrich/sample/blob/master/Sample.source/README.md
[5] https://gist.github.com/1893955
[6] https://github.com/dalehenrich/metacello
[7] https://github.com/dalehenrich/filetree
[8] https://gist.github.com/1894011

Nick Ager

unread,
Feb 24, 2012, 9:28:24 AM2/24/12
to Metacello
Dale,

Thanks for the detailed information. I'll study it more depth over the
weekend. I am really interested in git-based VC for Smalltalk, but
won't be able to devote much time to it.

> I think it would be very interesting if you and Frank used github to put together your demo. The HEAD of the Sample project cannot be loaded using filetree as I munged it to show off what I would like the structure to be, but there are earlier versions of of the project (in particular I've used a tag to mark the version that can be loaded and played with:
>
> We could collaborate on a set of gists for the demo and I can provide patches that fix any bugs you might hit ... perhaps you should fork the metacello, sample and filetree projects?
>
> You can also show off cloning of the sample repository, where you can save your work to the git repository then commit and push your work back up to your github fork

For Monday's meeting I'll try to put together a simple clone/modify/
commit/push workflow - I'll be more of a discussion than polished
presentation. I'll let you know how we get along.

Thanks

Nick

Dale Henrichs

unread,
Feb 24, 2012, 12:20:22 PM2/24/12
to meta...@googlegroups.com
Sounds cool!

I'll keep an eye on the mailing list over the weekend and will help with any issues that might pop up ...

Dale

----- Original Message -----
| From: "Nick Ager" <nick...@gmail.com>
| To: "Metacello" <meta...@googlegroups.com>

Nick Ager

unread,
Feb 27, 2012, 1:26:24 PM2/27/12
to Metacello
Hi Dale,

I'm sure I've missed it in your detailed instructions - but can't find
the details. How can I download the Metacello scripting support so
that I can execute:

Metacello new
project: 'Sample';
repository: 'github://dalehenrich/sample:master';
load.

Thanks

Nick

On Feb 24, 5:20 pm, Dale Henrichs <dhenr...@vmware.com> wrote:
> Sounds cool!
>
> I'll keep an eye on the mailing list over the weekend and will help with any issues that might pop up ...
>
> Dale
>
>
>
>
>
>
>
> ----- Original Message -----
>

Dale Henrichs

unread,
Feb 27, 2012, 1:42:50 PM2/27/12
to meta...@googlegroups.com
Nick,

The bootstrapping instructions for filetree/metacello are here[1].

You'll want to use the following scripting expressions to work with the Sample repository:

"download version of 1.2 the sample project, i.e., download from github, but don't load Sample project"

Metacello new
project: 'Sample';


repository: 'github://dalehenrich/sample:1.2/repository';
get.

"load version 1.2 of the sample project, i.e., download from github and load sample project code into image"

Metacello new
project: 'Sample';
repository: 'github://dalehenrich/sample:1.2/repository';
load.

These expressions specify version 1.2 which is the version of the sample project whose structure matches the structure that filetree is able to load.

The HEAD of the master branch is where I've been trying out alternate directory structures and I haven't bothered to keep the reader alive ... I'm waiting until we have a good idea of which direction we are heading:) before writing too much more code.

Sebastian tried the instructions out yesterday, so it should work out of the box ... I've been using Pharo1.3 ...

Dale

[1] https://gist.github.com/1894011


----- Original Message -----
| From: "Nick Ager" <nick...@gmail.com>
| To: "Metacello" <meta...@googlegroups.com>

Nick Ager

unread,
Feb 28, 2012, 6:55:12 AM2/28/12
to Metacello
Hi Dale,

Some feedback from the meeting.

Firstly I'm afraid I didn't have as much time as I wanted to prepare
and unfortunately family illness meant Frank had to bow out. That
said, here are some thoughts from the meeting:
1) Smalltalkers who have not been exposed to Git and particularly
GitHub are not perhaps as aware of the investment that has gone into
the tooling around Git and GitHub as programmers in other languages
might.... so when presenting I should have started with an overview of
Git and GitHub before launching into the Smalltalk integration.
2) so... the tooling and workflow (ease of forking/pull requests/issue
tracking/repository documentation etc etc) are not as immediately
apparent as I expected.
3) At the meeting are developers working Pharo, Squeak, VW, and VA
Smalltalks.
4) It's easy to get side-tracked into a trip to the Smalltalk museum
of challenged VCS integrations.
5) Dependency management and VC are often conflated.
6) Discussions around interoperability of VC can easily be diverted
into an endless discussion of incompatibility of namespaces & packages
between systems.
7) Browsing the code in GitHub with the one-method per file was felt
my some to be too much of a compromise, by others the ability to track
changes at a method level within the web GUI was a major win.
8) Some were excited by the potential of GitHub integration others are
happy with their current systems.

Sorry there wasn't more concrete feedback,

Nick

Dale Henrichs

unread,
Feb 28, 2012, 11:59:37 AM2/28/12
to meta...@googlegroups.com
Hey Nick,

Thanks for the effort and the report ....

I guess at some level I'm not surprised. When folks are happy with what they have, they see no reason to change and frankly there is no reason to change. This projects is aimed at the folks who aren't happy...

If I haven't been clear before my plan is to "seamlessly integrate" git/svn/github support into Metacello. This means:

If a project is managed on github, I won't have to install
gith to be able to LOAD the code

If I want to participate in the development of a project managed
on github I will have to install and use git

If I want to use a project managed on SqueakSource as part of
my project managed on github, I can do so

One of the reasons that I want to preserve the package ancestry is that I expect that folks will want to try out git/github and I don't want them to be locked into git/github once they've made the move.

git is an odd beast that takes a while to get used to (like Smalltalk:) and it isn't for the feint of heart, although there are a ton of resources on the web for using git/github. Stackoverflow has

13842 questions on git
2254 questions on github
384 questions on smalltalk

So the feint of heart will be able to learn to use git/github if they want to.

Thanks again,

Dale

----- Original Message -----
| From: "Nick Ager" <nick...@gmail.com>
| To: "Metacello" <meta...@googlegroups.com>

Reply all
Reply to author
Forward
0 new messages