[drupal-devel] Re: Help?

Jim Riggs drupal-lists at jimandlissa.com
Wed Apr 6 12:51:26 UTC 2005

On 5 Apr, 2005, at 23:27, Sheldon Rampton wrote:

> Jim Riggs wrote:
>> The latest release date is based on when the branch was created,  
>> not when something was last committed.
> I understand that. That's the problem. I want the current version  
> of the module to be what people get when they click on the link  
> that says "download latest release." Right now they're getting an  
> old version. How do I fix that?

I think you're misunderstanding the process.  It is confusing, I must  
admit, so let's do it as an example.  You may understand everything  
other than the packaging part, but others may find the whole example  
useful.  (People with more knowledge of the inner workings of the  
system, feel free to correct me where I am wrong.)

* I create and commit a new module "foo" (contributions/modules/foo).

* This version is for Drupal 4.5, so I branch for 4.5:

     cvs tag -b DRUPAL-4-5

* At this point, I have a DRUPAL-4-5 branch and HEAD which are the same.

* The Drupal packaging script (that automatically creates the .tar.gz  
of every project) runs every 6 (or 12?) hours.  It crawls the entire  
contributions repository.  For every project with files in HEAD, it  
creates a tarball that is labeled as the "cvs" version (foo- 
cvs.tar.gz).  For every project that has a Drupal branch (i.e.  
DRUPAL-4-x), it creates a tarball for each version  
(foo-4.5.0.tar.gz).  My understanding is that /all/ projects are  
packaged every time, so the tarball always contains the latest  
files;  HOWEVER, the project page displays the date the version was  
first encountered as the "latest release" date.  So if I created a  
branch on January 1 and committed new files yesterday, the date will  
still show Jan 1, but the tarball will include my changes from  
yesterday.  I don't need to do any branching or tagging again.  I  
only need to branch once.

* Now I make some changes to HEAD to make it compatible with 4.6 and  

     cvs ci -m 'updated for Drupal 4.6'

* The DRUPAL-4-5 branch of the module is for Drupal 4.5, and HEAD is  
now 4.6-compatible, so I can branch HEAD again for 4.6:

     cvs tag -b DRUPAL-4-6

* When the packager runs again, it will now pick up the 4.6 version  
and mark it as the latest release.  There will now be three versions:  
foo-4.6.0.tar.gz with the latest files from DRUPAL-4-6,  
foo-4.5.0.tar.gz with the latest files from DRUPAL-4-5, and foo- 
cvs.tar.gz with the latest files from HEAD.

In summary: The "latest release" date is not the date of the most  
recent change/commit.  It is the date the version was first  
encountered by the project module.  And, when a user downloads a  
tarball from drupal.org, he is always getting the latest CVS files  
for that particular version/branch (except, perhaps, for the 6 hour  
delay between runs).

Now I am not saying this is the best system.  There are lots of  
things I would like to see change in the entire versioning/packaging  
system, but this is how it is now.  It /is/ confusing, so I  
understand what you were trying to do, but I don't think there is a  
way that you can get that latest release date to change.  Hopefully  
this helps you to understand how things are working even if you don't  
understand why they are working that way.  ;-)

- Jim

More information about the drupal-devel mailing list