[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    Re: Generating patches from commit logs
From:       Albert den Haan <oponvybl () umail ! corel ! com>
Date:       2000-08-30 17:14:15
[Download RAW message or body]

This is pretty impressive stuff!  We have a system here for our production repository \
that updates a web page with the log messages and links to CVSWeb for each file \
changed in each commit.  It works, but the whole patch view is still hard to get.

However, I have used the date of the commit to get "cvs diff -D date1 -D date2" to \
give me the real changes.  CVS "diff" can give the diff between two timestamps (I'm \
not too sure about what happens with added and deleted files)

Maybe generating that line as part of the commit log sent to wine-cvs would be a good \
stopgap?  Yes one would have to cut and paste it to the shell of your choice, but \
then you get to play with it as you see fit.

For example here is a recent post to wine-cvs:

Alexandre Julliard wrote:
> 
> CVSROOT:        /opt/cvs-commit
> Module name:    wine
> Changes by:     julliard@wine2. 00/08/29 19:55:06
> 
> Modified files:
> dlls/dplayx    : dplay.c dplay_global.h dplaysp.c dplaysp.h
> dplayx_messages.c dplayx_messages.h
> name_server.c
> 
> Log message:
> Peter Hunnisett <hunnise@nortelnetworks.com>
> - More implementation
> - Should be able to enumerate sessions anywhere with at least tcp/ip

I would add the following lines

} To view the patch given a wine tree checked out from cvs.winehq.com
} execute
}  cvs diff -D "2000-08-29 23:54:00 UT" -D "2000-08-29 23:55:06 ut"

I would be quite happy with this setup :)

Another way to do this that would be better for the longer term would be to extend \
CVSWeb to do what you have described below.

	Albert


"Dimitrie O. Paun" wrote:
> 
> Hi people,
> 
> For the longest time I wanted to be able to look at
> some of the changes that make it into the repository.
> It is a great way to review code, follow the latest
> changes, and understand/learn new code areas.
> 
> For the time being, one can (partially) do that by
> reading the diffs sent out by Alexandre with each
> release. However, they are _very_ big, and one
> can not easily separate the logical changes from
> one another.
> 
> Instead, what I was looking for was more on the lines
> of somehow being able to easily look at the diff
> associated with any of the email messages sent to
> wine-cvs list. That is, have a link sent out together
> with the message on which I can click to view the
> respective diff.
> 
> Now, wanted this feature so badly that I actually went
> ahead and implemented it! :))) Here is the idea:
> -- generate a ID for each message sent out
> -- include it in the message along with a summary
> of changes
> -- include a link in the message that passes to a
> CGI program the ID of the commit
> -- the CGI program searches the commitlog, extracts
> the summary info and generates the patch
> 
> It works. I am not 100% happy with the implementation,
> but it is good enough to be used in practice (it is
> used in production at my workplace). Here is a list of
> issues with the current implementation:
> -- the generated diff includes only the changes, it
> does not include the added or deleted files.
> What to do with those?
> -- the CGI program must reside on the CVS machine
> as it needs access to the commit log; the name
> of the machine gets hardcoded in the commit
> log entry.
> Not a big deal in Wine's case I think, as
> cvs.winehq.com is not likely to change.
> -- the program does a linear scan of the commit log,
> so in the long term, we can have problems.
> I would like to have each log message saved in
> a file in some sort of directory structure
> (I was considering:
> commitlog.d/<year>/<week of year>/<id of msg>)
> That would be much better and I would be happy
> to implement it if no one objects to it.
> 
> How does the thing looks like? Well, here is a log
> message generated as explained above:
> 
> <message>
> ChangeSet ID: 967585195303215279709548
> CVSROOT:  /usr/local/cvsroot
> Module name: evolve-client
> Changes by:  fchung@redpill.redcelsius.on.ca. 00/08/29 17:39:55
> 
> Modified files:
> com/esolutions/mdl/dbaccess: AbstractUpdater.java
> ClientUpdater.java
> com/esolutions/mdl/logger: CreateLog_XML.java LogRecord.java
> UpdateLog.java
> 
> Log message:
> Sync: fixed problem when there are more than one meta columns
> with the same table/field names in a meta object.
> 
> Patch:
> http://cvs/patch?root=/usr/local/cvsroot&logs=/usr/local/cvsroot/CVSROOT/evo
> lvelog&id=967585195303215279709548
> 
> Revision  Changes    Path
> 1.19     +38 -20
> evolve-client/com/esolutions/mdl/dbaccess/AbstractUpdater.java
> 1.8      +4 -2
> evolve-client/com/esolutions/mdl/dbaccess/ClientUpdater.java
> 1.9      +88 -125
> evolve-client/com/esolutions/mdl/logger/CreateLog_XML.java
> 1.4      +7 -7      evolve-client/com/esolutions/mdl/logger/LogRecord.java
> 1.7      +23 -20    evolve-client/com/esolutions/mdl/logger/UpdateLog.java
> </message>
> 
> Now, my mailer may have wrapped some lines, but you
> get the idea...
> 
> My questions are:
> -- do you guys agree that it would be cool to have
> such a thing for the Wine repository
> -- if so, what would it take to implement these
> features in our repository
> 
> --
> Dimi.

--
Albert den Haan, Lead Developer @ Linux Port Team . Corel Corporation
albertd@corel.com   x 5318
-- 
The address in the headers is not the poster's real email address.  Do not send
private mail to the poster using your mailer's "reply" feature.  CC's of mail 
to mailing lists are OK.  Problem reports to "postmaster@umail.corel.com".  
The poster's email address is "albertd@corel.com".


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic