Re: [Pharo-project] Gofer git

2009-12-14 Thread Lukas Renggli
The latest version of Gofer should be more stable. I've rewritten most
internal implementation details, the tests should run faster and they
do not depend on an external repository anymore. Most of the core
functionality is now tested, not just things that are easy to test. I
did the following changes:

1. I've renamed #addPackage: and #addVersion: to #package: and
#version:. The #add: caused some confusion and people asked me what
was done at this point. Since this is just a plain specification of a
package or a version it is now called like that. It is also shorter.

2. Gofer doesn't support any longer to work on different repository
groups in one operation. I've never used it and it made the
implementation more complicated than necessary. The order in which
things are defined in Gofer doesn't matter anymore. The following
specification would try to operate on the packages Seaside2.8a1,
Scriptaculous and RSRSS2 in the repositories of Seaside and rsrss.

Gofer new
squeaksource: 'Seaside';
package: 'Seaside2.8a1';
package: 'Scriptaculous';
squeaksource: 'rsrss';
package: 'RSRSS2'

The above snipped is the same as the one below (which is the preferred
way of writing it):

Gofer new
squeaksource: 'Seaside';
squeaksource: 'rsrss';
package: 'Seaside2.8a1';
package: 'Scriptaculous';
package: 'RSRSS2'

3. Gofer prefers to load versions from faster repositories. The
package-cache and local file-directories have higher priority than
remote repositories.

4. Gofer implicitly declares the local package cache as a repository.
To disable this, send the message #disablePackageCache to the Gofer
instance.

5. Gofer throws errors if a repository is not reachable. To disable
this, send the message #disableRepositoryErrors to the Gofer instance.
The example below will silently load the latest Seaside version from
the package-cache, if the remote repository is not reachable (network
error, squeaksource down, invalid repositor):

Gofer new
disableRepositoryErrors;
squeaksource: 'Seaside';
package: 'Seaside2.8a1';
load

6. The following command fetches all versions of SomePackage into the
local package-cache that are not downloaded yet:

Gofer new
squeaksource: 'repository';
package: 'SomePackage';
fetch

7. The following command commits all versions of SomePackage into the
remote repository that are not uploaded yet:

Gofer new
squeaksource: 'repository';
package: 'SomePackage';
fetch

8. Gofer has better support for FTP repositories:

Gofer new
url: 'ftp://wtf-is-ftp.com/code';
...

9. And local directories:

Gofer new
directory: '/home/renggli/repository';
...

10. And local directories with subdirectories:

Gofer new
directory: '/home/renggli/repository/*';
...

With all this new functionality there might be bugs :-)

Lukas

-- 
Lukas Renggli
http://www.lukas-renggli.ch

___
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


Re: [Pharo-project] Gofer git

2009-12-14 Thread Peter Hugosson-Miller
Hmmm... Examples 6 and 7 look the same to me, care to explain further?

--
Cheers,
Peter.

On 14 dec 2009, at 09.11, Lukas Renggli reng...@gmail.com wrote:

 The latest version of Gofer should be more stable. I've rewritten most
 internal implementation details, the tests should run faster and they
 do not depend on an external repository anymore. Most of the core
 functionality is now tested, not just things that are easy to test. I
 did the following changes:

 1. I've renamed #addPackage: and #addVersion: to #package: and
 #version:. The #add: caused some confusion and people asked me what
 was done at this point. Since this is just a plain specification of a
 package or a version it is now called like that. It is also shorter.

 2. Gofer doesn't support any longer to work on different repository
 groups in one operation. I've never used it and it made the
 implementation more complicated than necessary. The order in which
 things are defined in Gofer doesn't matter anymore. The following
 specification would try to operate on the packages Seaside2.8a1,
 Scriptaculous and RSRSS2 in the repositories of Seaside and rsrss.

Gofer new
squeaksource: 'Seaside';
package: 'Seaside2.8a1';
package: 'Scriptaculous';
squeaksource: 'rsrss';
package: 'RSRSS2'

 The above snipped is the same as the one below (which is the preferred
 way of writing it):

Gofer new
squeaksource: 'Seaside';
squeaksource: 'rsrss';
package: 'Seaside2.8a1';
package: 'Scriptaculous';
package: 'RSRSS2'

 3. Gofer prefers to load versions from faster repositories. The
 package-cache and local file-directories have higher priority than
 remote repositories.

 4. Gofer implicitly declares the local package cache as a repository.
 To disable this, send the message #disablePackageCache to the Gofer
 instance.

 5. Gofer throws errors if a repository is not reachable. To disable
 this, send the message #disableRepositoryErrors to the Gofer instance.
 The example below will silently load the latest Seaside version from
 the package-cache, if the remote repository is not reachable (network
 error, squeaksource down, invalid repositor):

Gofer new
disableRepositoryErrors;
squeaksource: 'Seaside';
package: 'Seaside2.8a1';
load

 6. The following command fetches all versions of SomePackage into the
 local package-cache that are not downloaded yet:

Gofer new
squeaksource: 'repository';
package: 'SomePackage';
fetch

 7. The following command commits all versions of SomePackage into the
 remote repository that are not uploaded yet:

Gofer new
squeaksource: 'repository';
package: 'SomePackage';
fetch

 8. Gofer has better support for FTP repositories:

Gofer new
url: 'ftp://wtf-is-ftp.com/code';
...

 9. And local directories:

Gofer new
directory: '/home/renggli/repository';
...

 10. And local directories with subdirectories:

Gofer new
directory: '/home/renggli/repository/*';
...

 With all this new functionality there might be bugs :-)

 Lukas

 -- 
 Lukas Renggli
 http://www.lukas-renggli.ch

 ___
 Pharo-project mailing list
 Pharo-project@lists.gforge.inria.fr
 http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

___
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


Re: [Pharo-project] Gofer git

2009-12-14 Thread Lukas Renggli
Obviously a copy and paste error. It should be like this:

6. The following command downloads all versions of SomePackage from
the remote repository to the local package-cache, if not present yet:

   Gofer new
   squeaksource: 'repository';
   package: 'SomePackage';
   fetch

7. The following command uploads all versions of SomePackage from the
local package-cache to the remote repository, if not present yet:

   Gofer new
   squeaksource: 'repository';
   package: 'SomePackage';
   push

Better?

Lukas

-- 
Lukas Renggli
http://www.lukas-renggli.ch

___
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


Re: [Pharo-project] Gofer git

2009-12-10 Thread Adrian Kuhn
Stéphane Ducasse stephane.duca...@... writes:

 I do not know if you noticed that with the latest version
 of Gofer you can get a full git behavior
 
 Tx lukas 
 

Lukas, this is just plain awesome!

--AA


___
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

[Pharo-project] Gofer git

2009-12-09 Thread Stéphane Ducasse
Hi guys

I do not know if you noticed that with the latest version of Gofer you can get 
a full git behavior

Gofer new 
squeaksource: 'PharoTaskForces';
addPackage: 'RPackage';
pull

to pull all the packages pubslihed and fill up your local cache

Gofer new 
squeaksource: 'PharoTaskForces';
addPackage: 'RPackage';
push

to push your local saved versions to the repository

Of course it means that you can build a database and when you run your script 
the cache is checked first so yes you can work in the train :)

Tx lukas 



___
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


Re: [Pharo-project] Gofer git

2009-12-09 Thread Sean Allen
On Wed, Dec 9, 2009 at 7:28 AM, Stéphane Ducasse
stephane.duca...@inria.frwrote:

 Hi guys

 I do not know if you noticed that with the latest version of Gofer you can
 get a full git behavior

 Gofer new
squeaksource: 'PharoTaskForces';
addPackage: 'RPackage';
pull

 to pull all the packages pubslihed and fill up your local cache

 Gofer new
squeaksource: 'PharoTaskForces';
addPackage: 'RPackage';
push

 to push your local saved versions to the repository

 Of course it means that you can build a database and when you run your
 script
 the cache is checked first so yes you can work in the train :)

 Tx lukas


That is awesome.
___
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Re: [Pharo-project] Gofer git

2009-12-09 Thread Lukas Renggli
 I do not know if you noticed that with the latest version of Gofer you can 
 get a full git behavior

Not full, but at least it mimics that Git syncs the local and remote
repositories.

 Gofer new
        squeaksource: 'PharoTaskForces';
        addPackage: 'RPackage';
        pull

This operation is called #fetch in the latest Gofer, I renamed it
recently. This is how it is called originally in Git and it downloads
all versions to the local package cache.

 to pull all the packages pubslihed and fill up your local cache

 Gofer new
        squeaksource: 'PharoTaskForces';
        addPackage: 'RPackage';
        push

 to push your local saved versions to the repository

There is updated documentation in the class comment and on my blog
article at http://www.lukas-renggli.ch/blog/gofer.

 Of course it means that you can build a database and when you run your script
 the cache is checked first so yes you can work in the train :)

The reason why I didn't announce this, is because the current
implementation has serious problems that need to be fixed.

For example, reading from a remote repository that is not available
silently fails. Furthermore, to determine the latest version all
available versions from all repositories are merged, that is often not
desired.

I probably need to introduce some kind of a repository object where
the user can specify these things (consider cache or not, fail
silently or not, ...). Also there are no tests for any of this, so use
it at your own risk.

Lukas

-- 
Lukas Renggli
http://www.lukas-renggli.ch

___
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project