Switching to git

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Switching to git

Paolo Bonzini-2
I converted GNU Smalltalk's Arch repository to git.  All development
after the 3.0 release will be available only through git and through the
new git-cvs gateway (see later).  The Arch repositories
[hidden email] and [hidden email]--2004b will be available but
undocumented (so that they are slowly blurred away by time) and will not
be up-to-date anymore.  I've added cacherevs of the last revisions to
help people who find them by mistake, but that's as much maintainance as
I'm willing to do.

It is recommended that you access the repository with git, of course;
GNU Smalltalk's Git repository can be accessed through HTTP as well as
through the faster Git protocol.  Either of the following commands will
clone GNU Smalltalk's repository on your machine:

   git clone git://git.sv.gnu.org/smalltalk.git
   git clone http://git.sv.gnu.org/r/smalltalk.git

Cloning automatically creates a branch for your work, called master. If
you want to base your work on a stable release, you can create local
branches from the official stable branches:

   git checkout -b stable-2.3 origin/stable-2.3

After creating the branch, just "git checkout stable-2.3" or "git
checkout master" will be enough to switch between branches; and after
cloning the repository, "git pull" will be enough to update the current
branch with any new patch available upstream (i.e. from me).

You can also browse the Git repository within a web browser.  Unlike
Arch, this is *fast* (well everything is faster than with Arch).  You
may also view the complete histories of any file in the repository as
well as differences among two versions.  Gitweb also allows you to get
the latest source code as a tarball, like this:

   wget -O smalltalk-latest.tar.gz \
 
'http://git.savannah.gnu.org/gitweb/?p=smalltalk.git;a=snapshot;h=master'
   wget -O smalltalk-2.3-latest.tar.gz \
 
'http://git.savannah.gnu.org/gitweb/?p=smalltalk.git;a=snapshot;h=stable-2.3'


As with Arch, by setting up your own public repositories for GNU
Smalltalk branches, you will facilitate integration of your code into
the main distribution.  You can do so at http://repo.or.cz/ -- if you do
it, please write something on the wiki.  You can get some inspiration at
http://repo.or.cz/about.html and
http://savannah.gnu.org/maintenance/UsingGit.

You can prepare a patch "the old way" (i.e. just by doing a single
commit in your master branch).  Just send out the URL for the branch and
the sha1 identifier for the commit (you get it from "git log", the first
8-10 characters are enough) and I'll cherry-pick it.

For more complicated work, you can also set up a "topic branch".   Here
you can use "git rebase <BRANCH>" (where <BRANCH> will be usually
"master", "origin/master" or "origin/stable-VERSION") to reapply your
patches on top of a new branch.  This is the same as "tla update",
except that it works also if you committed something on the branch.
Alternatively, you can use "git merge <BRANCH>" which is the same as
"tla replay".

In both cases, use "git merge --squash <TOPIC-BRANCH>" to turn the topic
branch into a single commit to be sent out the same way.


The "git rebase" example will have shown you that unlike Arch, git is
quite happy to rewrite history unless you've already pushed upstream.
In "topic branches" of course you are more free, because you probably
won't push them until you're done with them.  Interesting commands to do
so include:

"oh no, I forgot the ChangeLog"
git commit --amend

"oh no, I forgot --amend"
"the fix is a one-liner, but I committed the buggy patch two weeks ago"
git rebase --interactive HEAD^^^^


There *is* one thing you'll miss switching from Arch to git, namely "tla
missing".  Everything else will be sweet.


To import your arch tree, you can use git-archimport.  I suggest that
you find your branchpoint in my git archive (just use "git log
origin/master" and find the SHA1 checksum for the commit), then do

   # Prepare work area
   git checkout -b local-branchpoint <BRANCHPOINT>
   git checkout -b local local-branchpoint

   # Go
   git archimport [hidden email]--2007/smalltalk--devo--2.2:local

   # "tla update"
   git checkout -b prepare-to-merge local
   git rebase origin/master
     ... lots of fixing conflicts ...

   # Let it become the new master branch
   git checkout master
   git merge prepare-to-merge
   git branch -D prepare-to-merge
   git branch -D local-branchpoint
   git branch -D local



Anonymous CVS access
====================

Alternatively, a CVS repository can be checked out through anonymous CVS
with one the following commands (again, respectively for the stable and
development branches).

   cvs -d :pserver:[hidden email]:/smalltalk.git \
     co -d smalltalk HEAD
   cvs -d :pserver:[hidden email]:/smalltalk.git \
     co -d smalltalk stable-2.3

When you update from within the checked out directory you do not need
the -d options anymore:

   cvs update



Building
========

As with Arch, after checking out the Git or CVS repositories, in order
to build GNU Smalltalk you will need the following tools installed:

* Autoconf 2.60 or later
* Automake 1.9 or later
* Libtool 1.5.x

You will then need to issue the following commands:

   autoreconf -fvi
   ./configure
   make

Paolo


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Switching to git

Paolo Bonzini-2

> In both cases, use "git merge --squash <TOPIC-BRANCH>" to turn the topic
> branch into a single commit to be sent out the same way.

... from within another branch such as "master", of course.

Paolo


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Switching to git

Ildar Mulyukov
In reply to this post by Paolo Bonzini-2
        For newbies:

On 15.01.2008 20:40:54, Paolo Bonzini wrote:
...
> GNU Smalltalk's Git repository can be accessed through HTTP as well as
> through the faster Git protocol.  Either of the following commands  
> will
> clone GNU Smalltalk's repository on your machine:
...
There's a tradition to advice reading "Everyday GIT" and both Tutorials  
to newbies. You can find those in your local Git documentation or Git  
website. For Russian-speakers http://freesource.info has some useful  
bits of info.

> You can also browse the Git repository within a web browser.

Several GUIs available, that give a very good presentation for both  
newbies and experienced. Worth to notice are qgit and giggle.

> You can prepare a patch "the old way" (i.e. just by doing a single  
> commit in your master branch).  Just send out the URL for the branch  
> and the sha1 identifier for the commit (you get it from "git log",  
> the first 8-10 characters are enough) and I'll cherry-pick it.

If you don't have a public repo, git-diff is to help in "plain text  
patch" manner.

Git is a great and flexible. It worth time you spend to learn it.

Best regards, Ildar.
--
Ildar  Mulyukov,  free SW designer/programmer
================================================
email: [hidden email]
home: http://tuganger.narod.ru/
ALT Linux Sisyphus
================================================


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Switching to git

Ildar Mulyukov
In reply to this post by Paolo Bonzini-2
On 15.01.2008 20:40:54, Paolo Bonzini wrote:
>    git clone http://git.sv.gnu.org/r/smalltalk.git

        Hi!

Would you mind setting tags to easily find releases in the tree? Or /  
and publish commit name (sha1) when announcing a new release (along  
with snapshot ftp reference)?

Thanks! Best regards, Ildar
--
Ildar  Mulyukov,  free SW designer/programmer
================================================
email: [hidden email]
home: http://tuganger.narod.ru/
ALT Linux Sisyphus
================================================


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Switching to git

Paolo Bonzini-2
Ildar Mulyukov wrote:
> On 15.01.2008 20:40:54, Paolo Bonzini wrote:
>>    git clone http://git.sv.gnu.org/r/smalltalk.git
>
>     Hi!
>
> Would you mind setting tags to easily find releases in the tree? Or /
> and publish commit name (sha1) when announcing a new release (along with
> snapshot ftp reference)?

It's on the todo list.

If you would like to do that for some releases, it would help.

Paolo


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Switching to git

Paolo Bonzini-2
In reply to this post by Ildar Mulyukov
Ildar Mulyukov wrote:
> On 15.01.2008 20:40:54, Paolo Bonzini wrote:
>>    git clone http://git.sv.gnu.org/r/smalltalk.git
>
>     Hi!
>
> Would you mind setting tags to easily find releases in the tree? Or /
> and publish commit name (sha1) when announcing a new release (along with
> snapshot ftp reference)?

Done.  Here are the past tags:

2.1.10 091ff807de650cc4dcb05c224e767f2d087cc947
2.1.11 d4adf569f99383a74728fa05f769869ef544cdd3
2.1.12 7f4075bc695b9a03d73bb9234d761fc5e5eb97fd
2.2 814a66cbb855d938800920af87b82c7b2482bb35
2.2b 8f13627bf6bbc8ac8c2b7fca3fbd33d0b7493d4f
2.2c 9ef5f3b98fcb04e0117e40443680b4a431e98df0
2.2d 390fb57dc55298fdf6a069b2a46e536b552c9b42
2.2e f0bd3e961a77d690497e9e9a992cde7c25bb98ae
2.3 c12351db9705cda21f5d15aa2de3d3f5d88691a9
2.3.1 d1c95fe922073f97adc468308cc99ccd0cc5f4db
2.3.2 61321e6ef5b64cc12d36df06a8de42fed8984146
2.3.3 c4ebb205f9a43e7723ba724e47cdb552e7c68ace
2.3.4 14dbff5cb58243227f1dcfaf40f5eaade813dd54
2.3.5 6c5b2a03b845c87c9433c4ae7c1f7500e7ef661e
2.3.6 daf9afc14442d6757c7806eec006e56d6f274f0b
2.95a 8b7201f61ea4f1714608142d0f4078ab04878acb
2.95b 09def56de9fe5f1b9ad415cf4eea7824f6cc9f4d
2.95c fa41e863b214c11f86a45dd13f6eb399e8740c47
2.95d d2a3b2821628b211a3654c9f2d457327f7526ad5
2.95e 6280af469ba522724d46cd5d9c944fc8522f77d6
2.95f 7d90dcaaf860a37df956320f2b52c72563899b83
2.95g 525790bd455ceee3e1033c05b8d05bbb1f50ddf7
2.95h b0af9404428eb1030391c02519a4edd97307ef01
3.0 dceff0f979690837d94f7d3a829b9195e677e03e

All the tags are signed with this key (you can check that it's mine by
checking the tarballs on ftp.gnu.org against it).

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.6 (Darwin)

mQGiBD+U77wRBAC9sGug59V/lBjYZl1d7LT6lyq4v2K+TJ6HtHWjCNKmvRwPxRDW
TbHfKGgP0+zcEyYJaBUAQBmahNTKj2hwcyOkTcmmS2zhfLYv52AE7uW9cw8Qe8jw
eP7bslMrCo6fm6LS8ukihrQzu0kWv7GWU6Y5mHceeqcZH+3qnv1CUlOagwCgr3rA
bNDK8at4/llgfIVvUr98SCsEAI7DixENH8qwUTwzL43UikZh9zxWhipTtrCd5Cu0
eojRTL1uSEs9sHEsBqfpVAFNNcgNwUozNLmT95EyaIvmFhuNjSshjGYtN+R2zVQD
sNpRAPIES1ZdsVTiu/lq1avFSdLY1+rVMWI0OILckWkyhY5mGCTYP2MHCZJEjyW5
Rj4IBACC2qa761p7RbfrWRwvp8n84gAG4pusZt4y8FbUdBC02bUxFVjQFfQH+6TX
o0PeKZUJmdH3yHanlxqgaKL9VIwXhFIuY+pqZsIpzC9yh+OhOaQr1nPEhMmYFc5f
m/T4sdc3JO6NZEZ3i6oq8aLRk+LjKmC40aZ+FoLui7IVlhQ9ibQfUGFvbG8gQm9u
emluaSA8Ym9uemluaUBnbnUub3JnPohZBBMRAgAZBQI/lO+8BAsHAwIDFQIDAxYC
AQIeAQIXgAAKCRAmhPmsp1BWby7pAJ9hTG4xDXMHZpD0gXblrSsOSV98nQCeLazB
g05Hoc7qjfm6I1NZNl7lb9+5AQ0EP5TvwRAEAPIUmyJNvzcRPz4uH5SvuMVPHr/4
y29393HX8ZIQvHmMmDvK2dv6fXtN1CHWbR8vIW+RE1OuxzBFM5djw4KIEm3qwKsg
D6eG801ZSbXwUxNhY1Ohqt0/NGF99KjCbQcgz1NkULz5qChgpbtrnJYG8s6bL0q0
ZCYCpdkvdmRb0pGnAAMFBACh1fixiC/EoCkoHgXLtKeJ8iWoDr0jvVpEOBiBHMad
dNIvsatFcdbGZ8mDniOsWBhH3P8BTHSh+RrQcOaMD8UnFn2C+WqXE9HmUBSiAvD9
vIEcLf15xHiuvTbEu3j+UbIsU5zQLfJ021FwwZ3a5d7aQLYHK+u7TTUQ+2jRc1t+
7IhGBBgRAgAGBQI/lO/BAAoJECaE+aynUFZvwR4An0SoMqFTGWgsspb+Ql0A+VMI
vL9aAJ4wxTfnHzmzPy/zamWZ/wGDyLMGbA==
=ZNgq
-----END PGP PUBLIC KEY BLOCK-----

Paolo


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

Re: Switching to git

Ildar Mulyukov
On 23.01.2008 16:38:34, Paolo Bonzini wrote:
> Ildar Mulyukov wrote:
>> Would you mind setting tags to easily find releases in the tree? Or  
>> / and publish commit name (sha1) when announcing a new release  
>> (along with snapshot ftp reference)?
>
> Done.  Here are the past tags:

Thanks a lot!
--
Ildar  Mulyukov,  free SW designer/programmer
================================================
email: [hidden email]
home: http://tuganger.narod.ru/
ALT Linux Sisyphus
================================================


_______________________________________________
help-smalltalk mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-smalltalk