You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(1) |
Oct
(2) |
Nov
|
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(2) |
May
(19) |
Jun
(1) |
Jul
(10) |
Aug
(3) |
Sep
(10) |
Oct
(2) |
Nov
(16) |
Dec
(6) |
2004 |
Jan
(13) |
Feb
(2) |
Mar
(15) |
Apr
(8) |
May
(5) |
Jun
(1) |
Jul
(3) |
Aug
(5) |
Sep
|
Oct
(38) |
Nov
|
Dec
(7) |
2005 |
Jan
(16) |
Feb
(8) |
Mar
(34) |
Apr
(9) |
May
(3) |
Jun
(2) |
Jul
(4) |
Aug
(2) |
Sep
(1) |
Oct
(3) |
Nov
(18) |
Dec
(10) |
2006 |
Jan
(1) |
Feb
(1) |
Mar
(4) |
Apr
|
May
|
Jun
(20) |
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
(5) |
Nov
(22) |
Dec
(10) |
2007 |
Jan
(16) |
Feb
(12) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
(1) |
Mar
(4) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
(6) |
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
(2) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
(1) |
Oct
(1) |
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(6) |
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Richard C. <ri...@cy...> - 2005-12-01 16:49:21
|
On 1 Dec 2005, at 01:31, Steffen Pingel wrote: > Hi, > >>> AuthorProfileFactory? This sounds like the classic situation for a >>> factory >>> pattern. >> >> This implies that you have an AuthorProfile class with many >> instances. Can we do without? > > Why would we want to? Creating these objects is a one time task, > just as > parsing the cvs log file, and should be done on start up. IMHO a > simple > Profile class with a couple of getters and setters will do the job. OK, you win. Let's have an AuthorProfile type. > But while > we are at it, we may want to go with an interface that specifies > the get > methods and provide a default implementation that has the setters > as well. Nah. I don't see why an interface should be necessary at the current state. I don't want to generalize prematurely. Would that cover your needs? interface AuthorProfileFactory Profile getProfile(String loginName); class AuthorProfile String getFullName(); String getImageURL(); String getWebPageURL(); + setters Richard >>> Presentation layer classes would merely need to call >>> Author.getProfile() >>> and then render that profile any way they like. >> >> That's where I disagree. I'd prefer the log parsing and >> representation to make no assumptions about the application that uses >> the data. Having Author.getProfile() would add such an assumption to >> the log representation. > > Yes, I certainly agree. The profile stuff should be kept separate > from the > model code as there is no apparent connection to the cvs log. > >> I want to be able to re-use the low-level >> classes (like Author) without having a dependency that forces me to >> drag higher-level classes (like the Profile stuff) into my new >> project. > > Exactly. StatCvs-XML which shares the model code has a very > different approach > to the profile . For maven we have a straight forward dom parser > that stores > results in a map of maps. > > SAXBuilder builder = new SAXBuilder(); > Document suite = builder.build(file); > Element element = suite.getRootElement().getChild("developers"); > if (element != null) { > for (Iterator it = element.getChildren().iterator(); it.hasNext > ();) { > Element developer = (Element)it.next(); > String id = developer.getChildText("id"); > if (id == null) { > continue; > } > if (developer.getChildText("name") != null) { > settings.setFullname(id, developer.getChildText("name")); > } > if (developer.getChildText("image") != null) { > settings.setAuthorPic(id, developer.getChildText > ("image")); > } > else if (developer.getChildText("url") != null) { > settings.setAuthorPic(id, developer.getChildText > ("url") + "/" + > id + ".png"); > } > } > } > > If anyone were to define a profile class I would probably go ahead and > refactor the code though :). > > Steffen > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through > log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD > SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > Statcvs-users mailing list > Sta...@li... > https://lists.sourceforge.net/lists/listinfo/statcvs-users > |
From: Steffen P. <ste...@gm...> - 2005-12-01 15:48:38
|
Hi, > I created the log on the main branch. Here is a small section of the log > that produces the error. I am not sure if I cut the log properly (I cut > before and after the equal sign dividers). It worked on my system using statcvs 0.2.2 downloaded from sf: # java -jar statcvs-0.2.2.jar cvs.log . -output-dir output/ -verbose StatCVS - CVS statistics generation Parsing CVS log 'cvs.log' Generating report for cvsroot into output/ Using default CSS file (statcvs.css) could not get line count for './tcdriver/db2/workflow/DB2_Product_Uninstall.wkf': java.io.FileNotFoundException: ./tcdriver/db2/workflow/DB2_Product_Uninstall.wkf (No such file or directory) could not get line count for './tcdriver/db2/workflow/DB2_User_Add.wkf': java.io.FileNotFoundException: ./tcdriver/db2/workflow/DB2_User_Add.wkf (No such file or directory) could not get line count for './tcdriver/db2/workflow/DB2_User_Delete.wkf': java.io.FileNotFoundException: ./tcdriver/db2/workflow/DB2_User_Delete.wkf (No such file or directory) Creating CSS file at 'output/statcvs.css' Creating page 'Authors' Creating page 'Authors' Creating page 'Development Statistics for cvsroot' Creating page 'Lines of Code' Creating page 'File Sizes and File Counts' Creating page 'Directory Sizes' Creating page 'Module ' Creating page 'Module tcdriver/' Creating page 'Module tcdriver/db2/' Creating page 'Module tcdriver/db2/workflow/' Creating page 'Commit Log' Creating page 'User statistics for dconstan' Creating page 'User statistics for epostea' Creating page 'User statistics for jpacker' Creating page 'User statistics for vwtsang' runtime: 9.598 seconds memory usage: 1204.0 kb Could you please run this on your system and send the output (to me personally if you like, in case it contains private information)? Steffen -- Steffen Pingel - ste...@gm... - http://steffenpingel.de |
From: Steffen P. <ste...@gm...> - 2005-12-01 07:38:12
|
Hi, > > AuthorProfileFactory? This sounds like the classic situation for a > > factory > > pattern. > > This implies that you have an AuthorProfile class with many > instances. Can we do without? Why would we want to? Creating these objects is a one time task, just as parsing the cvs log file, and should be done on start up. IMHO a simple Profile class with a couple of getters and setters will do the job. But while we are at it, we may want to go with an interface that specifies the get methods and provide a default implementation that has the setters as well. > > Presentation layer classes would merely need to call > > Author.getProfile() > > and then render that profile any way they like. > > That's where I disagree. I'd prefer the log parsing and > representation to make no assumptions about the application that uses > the data. Having Author.getProfile() would add such an assumption to > the log representation. Yes, I certainly agree. The profile stuff should be kept separate from the model code as there is no apparent connection to the cvs log. > I want to be able to re-use the low-level > classes (like Author) without having a dependency that forces me to > drag higher-level classes (like the Profile stuff) into my new project. Exactly. StatCvs-XML which shares the model code has a very different approach to the profile . For maven we have a straight forward dom parser that stores results in a map of maps. SAXBuilder builder = new SAXBuilder(); Document suite = builder.build(file); Element element = suite.getRootElement().getChild("developers"); if (element != null) { for (Iterator it = element.getChildren().iterator(); it.hasNext();) { Element developer = (Element)it.next(); String id = developer.getChildText("id"); if (id == null) { continue; } if (developer.getChildText("name") != null) { settings.setFullname(id, developer.getChildText("name")); } if (developer.getChildText("image") != null) { settings.setAuthorPic(id, developer.getChildText("image")); } else if (developer.getChildText("url") != null) { settings.setAuthorPic(id, developer.getChildText("url") + "/" + id + ".png"); } } } If anyone were to define a profile class I would probably go ahead and refactor the code though :). Steffen |
From: Richard C. <ri...@cy...> - 2005-11-30 23:50:14
|
Hi James, On 30 Nov 2005, at 23:43, James Ring wrote: > Hi Richard, > >> >> Yeah, the name sucks. I think the class should not represent a single >> profile, but a method of getting author profiles. It's clear what the >> implementation classes would be, things like PasswdFile, >> MavenProjectFile, SourceforgeWebsiteScraper. Now find a good common >> name for these. >> >> AuthorProfileSource? >> > > AuthorProfileFactory? This sounds like the classic situation for a > factory > pattern. This implies that you have an AuthorProfile class with many instances. Can we do without? > You could have the Factory as an abstract class with pretty much > the single > method > > public abstract AuthorProfile getProfile( Author a ); > > and then just subclass it and provide the correct concrete > implementation > depending on the command line options. > > Alternatively, you could it as a Factory which calls other factories. > For example, AuthorProfileFactory may call all its "sub-factories" > (PasswdAuthorProfileFactory) until it finds a factory which can > give back > a profile for the given author. This would allow StatCVS to source its > author profiles from many different sources at the same time... > Whether > that's useful or not is another question... :) Take it easy here ... ;-) >> Also, I see no need why the Author class should know about the >> existence of the profiles. I want the Author class to remain as close >> as possible to the concept of a CVS login. We're discussing a >> presentation issue, and changing stuff on the presentation layer >> shouldn't affect the core CVS classes. > > Actually, the AuthorProfile shouldn't have anything to do with the > presentation. You're right. Presentation was the wrong term. > How you choose to represent the author's profile is totally > up to the presentation layer. AuthorProfiles should be concerned > only with > those things which make up an author's profile (like you said, an e- > mail > address, URL, etc). > > Presentation layer classes would merely need to call > Author.getProfile() > and then render that profile any way they like. That's where I disagree. I'd prefer the log parsing and representation to make no assumptions about the application that uses the data. Having Author.getProfile() would add such an assumption to the log representation. I want to be able to re-use the low-level classes (like Author) without having a dependency that forces me to drag higher-level classes (like the Profile stuff) into my new project. Hope that makes sense. Richard > >> (Actually, the Author class should probably be called CVSLogin. My >> suggestions may make more sense if seen from that point of view.) > > Ok, maybe I am thinking differently about the role of the Author > class. > >> Richard >> > > Regards, > James > > PS. I'm now using StatCVS at my work, and the bossman likes it a > lot ;) > -- > James Ring > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through > log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD > SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > Statcvs-users mailing list > Sta...@li... > https://lists.sourceforge.net/lists/listinfo/statcvs-users > |
From: James R. <sj...@jd...> - 2005-11-30 22:43:45
|
Hi Richard, > > Yeah, the name sucks. I think the class should not represent a single > profile, but a method of getting author profiles. It's clear what the > implementation classes would be, things like PasswdFile, > MavenProjectFile, SourceforgeWebsiteScraper. Now find a good common > name for these. > > AuthorProfileSource? > AuthorProfileFactory? This sounds like the classic situation for a factory pattern. You could have the Factory as an abstract class with pretty much the single method public abstract AuthorProfile getProfile( Author a ); and then just subclass it and provide the correct concrete implementation depending on the command line options. Alternatively, you could it as a Factory which calls other factories. For example, AuthorProfileFactory may call all its "sub-factories" (PasswdAuthorProfileFactory) until it finds a factory which can give back a profile for the given author. This would allow StatCVS to source its author profiles from many different sources at the same time... Whether that's useful or not is another question... :) > > Imagine that profiles may provide other things except real names. > Email address, web link etc. There's no need to duplicate all these > methods on both the Author and Profiles class. Agreed. It was a silly suggestion on my part. > Also, I see no need why the Author class should know about the > existence of the profiles. I want the Author class to remain as close > as possible to the concept of a CVS login. We're discussing a > presentation issue, and changing stuff on the presentation layer > shouldn't affect the core CVS classes. Actually, the AuthorProfile shouldn't have anything to do with the presentation. How you choose to represent the author's profile is totally up to the presentation layer. AuthorProfiles should be concerned only with those things which make up an author's profile (like you said, an e-mail address, URL, etc). Presentation layer classes would merely need to call Author.getProfile() and then render that profile any way they like. > (Actually, the Author class should probably be called CVSLogin. My > suggestions may make more sense if seen from that point of view.) Ok, maybe I am thinking differently about the role of the Author class. > Richard > Regards, James PS. I'm now using StatCVS at my work, and the bossman likes it a lot ;) -- James Ring |
From: Richard C. <ri...@cy...> - 2005-11-30 22:26:49
|
On 30 Nov 2005, at 22:40, James Ring wrote: > Ok, I think I agree in principle, but I don't like the name > (AuthorProfilesIntegration). How about just a superclass > AuthorProfile, and > subclasses like MavenAuthorProfile or PasswdAuthorProfile or > LDAPAuthorProfile ... ? Yeah, the name sucks. I think the class should not represent a single profile, but a method of getting author profiles. It's clear what the implementation classes would be, things like PasswdFile, MavenProjectFile, SourceforgeWebsiteScraper. Now find a good common name for these. AuthorProfileSource? > I still think the method getRealName() should remain on the Author > class. > After all, Authors *do* have real names. Maybe it could just call > into the > author's profile. Imagine that profiles may provide other things except real names. Email address, web link etc. There's no need to duplicate all these methods on both the Author and Profiles class. Also, I see no need why the Author class should know about the existence of the profiles. I want the Author class to remain as close as possible to the concept of a CVS login. We're discussing a presentation issue, and changing stuff on the presentation layer shouldn't affect the core CVS classes. (Actually, the Author class should probably be called CVSLogin. My suggestions may make more sense if seen from that point of view.) Richard > I don't like the idea of having to say > > AuthorProfilesIntegration i = getProfileIntegration(); /* or > whatever */ > i.getRealName( author ); > > I think that's backwards. ;) > > Better to say > > Author a = /* ... */ > a.getRealName(); > // or > a.getProfile().getRealName(); > > or something like that. > >> This is the same general approach as with File and >> WebRepositoryIntegration. Please have a look at how these classes are >> used for inspiration. Note that we have a couple of different >> WebRepositoryIntegration implementations, and adding new ones is >> easy. I'd like to have the same possiblity for external author data. > > That's fair enough, and I think it's possible with an > AuthorProfile, but I'll > send patches and see what you think. > >> Steffen, any insight on this? What would be a good way to support >> both Maven and passwd files as data sources? >> >> Cheers, >> Richard >> > > Thanks for your time. > > Regards, > James > -- > James Ring |
From: James R. <sj...@jd...> - 2005-11-30 21:40:39
|
Hi Richard, On Thursday 01 December 2005 06:46, Richard Cyganiak wrote: > Hi James, > > Thanks for the patches. I think that adding external author metadata > (real names, but also email addresses and a link to a web page) is a > useful addition. But I don't like the way you've architected it. > Other users may want to get author data from other sources than > passwd files, and your patch would make it a bit hard to add other > sources. > > I'd suggest you change the patch to keep the passwd-specific logic > out of the core classes. Some ideas for this: > > - Store the real names not in the Author instances, but in a new > class, say PasswdFile, with a getRealName(Author) method. > - make PasswdFile an implementation of a new interface, say > AuthorProfilesIntegration, which has just that method for the moment. Ok, I think I agree in principle, but I don't like the name=20 (AuthorProfilesIntegration). How about just a superclass AuthorProfile, and= =20 subclasses like MavenAuthorProfile or PasswdAuthorProfile or=20 LDAPAuthorProfile ... ? I still think the method getRealName() should remain on the Author class.=20 After all, Authors *do* have real names. Maybe it could just call into the= =20 author's profile. I don't like the idea of having to say AuthorProfilesIntegration i =3D getProfileIntegration(); /* or whatever */ i.getRealName( author ); I think that's backwards. ;) Better to say =09 Author a =3D /* ... */ a.getRealName(); // or a.getProfile().getRealName(); or something like that. > This is the same general approach as with File and > WebRepositoryIntegration. Please have a look at how these classes are > used for inspiration. Note that we have a couple of different > WebRepositoryIntegration implementations, and adding new ones is > easy. I'd like to have the same possiblity for external author data. That's fair enough, and I think it's possible with an AuthorProfile, but I'= ll=20 send patches and see what you think. > Steffen, any insight on this? What would be a good way to support > both Maven and passwd files as data sources? > > Cheers, > Richard > Thanks for your time. Regards, James =2D-=20 James Ring |
From: Richard C. <ri...@cy...> - 2005-11-30 19:55:17
|
Hi Eric, Nice one. I didn't know about Jcvsweb. Looks like a nice project. Did you do the other changes that are necessary for proper integration? Like adding a command line switch and setting up the JcvswebIntegration instance in ConfigurationOptions? If you did, could you please create a patch and add it to the SourceForge patch tracker [1]? (Ideally, it would also contain a new section for the manual [2] -- hint, hint!) Cheers, Richard [1] http://sourceforge.net/tracker/?group_id=57558&atid=484571 [2] http://cvs.sourceforge.net/viewcvs.py/statcvs/htdocs/manual/ index.html?rev=HEAD&view=auto On 21 Nov 2005, at 23:07, Eric Meaney wrote: > Here is the source for the class I wrote to integrate with Jcvsweb > (http://www.jcvs.org/jcvsweb/) if anyone is interested. > > /** > * > */ > package net.sf.statcvs.output; > > import java.util.HashSet; > import java.util.Set; > > import net.sf.statcvs.model.CvsFile; > import net.sf.statcvs.model.CvsRevision; > import net.sf.statcvs.model.Directory; > > /** > * @author ERMEANEY > * > */ > public class JcvswebIntegration implements WebRepositoryIntegration { > private String baseURL; > private Set atticFileNames = new HashSet(); > /** > * > */ > public JcvswebIntegration(String baseURL) { > if (baseURL.endsWith("/")) { > this.baseURL = baseURL.substring(0, baseURL.length() - 1); > } else { > this.baseURL = baseURL; > } > } > > /* (non-Javadoc) > * @see net.sf.statcvs.output.WebRepositoryIntegration#getName() > */ > public String getName() { > return "JcvsWeb"; > } > > /* (non-Javadoc) > * @see > net.sf.statcvs.output.WebRepositoryIntegration#getDirectoryUrl > (net.sf.statcvs.model.Directory) > */ > public String getDirectoryUrl(Directory directory) { > String path = baseURL + "/HEAD/list/" + directory.getPath(); > return path; > } > > /* (non-Javadoc) > * @see > net.sf.statcvs.output.WebRepositoryIntegration#getFileHistoryUrl > (net.sf.statcvs.model.CvsFile) > */ > public String getFileHistoryUrl(CvsFile file) { > return baseURL + "/HEAD/vers/" + file.getFilenameWithPath(); > } > > /* (non-Javadoc) > * @see > net.sf.statcvs.output.WebRepositoryIntegration#getFileViewUrl > (net.sf.statcvs.model.CvsFile) > */ > public String getFileViewUrl(CvsFile file) { > return baseURL + "/HEAD/view/" + file.getFilenameWithPath() + > "/" + file.getLatestRevision().getRevisionNumber(); > } > > /* (non-Javadoc) > * @see > net.sf.statcvs.output.WebRepositoryIntegration#getFileViewUrl > (net.sf.statcvs.model.CvsRevision) > */ > public String getFileViewUrl(CvsRevision revision) { > return baseURL + "/HEAD/view/" + > revision.getFile().getFilenameWithPath() + "/" + > revision.getRevisionNumber(); > } > > /* (non-Javadoc) > * @see > net.sf.statcvs.output.WebRepositoryIntegration#getDiffUrl > (net.sf.statcvs.model.CvsRevision, > net.sf.statcvs.model.CvsRevision) > */ > public String getDiffUrl(CvsRevision oldRevision, CvsRevision > newRevision) { > return baseURL + "/HEAD/pdiff/" + > newRevision.getFile().getFilenameWithPath() + "/" + > oldRevision.getRevisionNumber() + "/" + > newRevision.getRevisionNumber(); > } > > /* (non-Javadoc) > * @see > net.sf.statcvs.output.WebRepositoryIntegration#setAtticFileNames > (java.util.Set) > */ > public void setAtticFileNames(Set atticFileNames) { > this.atticFileNames = atticFileNames; > } > > } > > -- > Eric Meaney > erm...@gm... > <JcvswebIntegration.java> |
From: Richard C. <ri...@cy...> - 2005-11-30 19:46:36
|
Hi James, Thanks for the patches. I think that adding external author metadata (real names, but also email addresses and a link to a web page) is a useful addition. But I don't like the way you've architected it. Other users may want to get author data from other sources than passwd files, and your patch would make it a bit hard to add other sources. I'd suggest you change the patch to keep the passwd-specific logic out of the core classes. Some ideas for this: - Store the real names not in the Author instances, but in a new class, say PasswdFile, with a getRealName(Author) method. - make PasswdFile an implementation of a new interface, say AuthorProfilesIntegration, which has just that method for the moment. This is the same general approach as with File and WebRepositoryIntegration. Please have a look at how these classes are used for inspiration. Note that we have a couple of different WebRepositoryIntegration implementations, and adding new ones is easy. I'd like to have the same possiblity for external author data. Steffen, any insight on this? What would be a good way to support both Maven and passwd files as data sources? Cheers, Richard On 27 Nov 2005, at 02:35, James Ring wrote: > Hi all, > > This patch makes the author page display real names (if available). > You can > see an example of the output generated by this patch at > > http://xtuml.jdns.org/statcvs/user_u3957053.html > > Please note that only the page title is changed. No other output is > affected. > > I'll also post this on the SourceForge patch tracker. > > Regards, > James > -- > James Ring > <author-page-real-name.patch> |
From: Steffen P. <ste...@gm...> - 2005-11-30 19:37:53
|
Hi, On Friday 25 November 2005 15:58, Jeff McRae wrote: > I tried to run cvsstat on my cvs log and I get > > [tioadmin@jmcrae3 statcvs-0.2.2]$ java -jar statcvs.jar > /tmp/statcvs-0.2.2/cvs-log.txt /home/tioadmin/cvs/tcdriver > StatCVS - CVS statistics generation > > null > [tioadmin@jmcrae3 statcvs-0.2.2]$ Make sure the log was created on the MAIN branch (do a fresh checkout or run 'cvs up -A'). Steffen -- Steffen Pingel - ste...@gm... - http://steffenpingel.de |
From: Richard C. <ri...@cy...> - 2005-11-30 18:52:11
|
Hi Jeff, I can't think of anything causing this problem right now. Not having access to the log, there's not really much we can do, unless you are willing to do all the work ... I suggest you have a look at the CVS log. You'll see that it contains one section for each file in the repository. Please copy only the first section into a new file and try to run StatCVS on that. Does it work? If it does, then try to find the file that caused the problem (using the debug output from your initial file). The files are processed in the order they appear in the file, so it shouldn't be hard. Can you spot anything suspicious in that file's log? Try to run StatCVS on only that part. Hope that helps, Richard On 29 Nov 2005, at 20:23, Jeff McRae wrote: > > sta...@li... wrote on 2005-11-25 > 05:42:36 PM: > > > Hi Jeff, > > > > On Saturday 26 November 2005 01:58, Jeff McRae wrote: > > > I tried to run cvsstat on my cvs log and I get > > > > > > [tioadmin@jmcrae3 statcvs-0.2.2]$ java -jar statcvs.jar > > > /tmp/statcvs-0.2.2/cvs-log.txt /home/tioadmin/cvs/tcdriver > > > StatCVS - CVS statistics generation > > > > > > null > > > [tioadmin@jmcrae3 statcvs-0.2.2]$ > > > > I don't know if it matters or not, but which version of Java are > you using? > > (java -version) > > Java is > > java version "1.4.2" > Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2) > Classic VM (build 1.4.2, J2RE 1.4.2 IBM build cxia321420-20040626 > (JIT enabled: jitc)) > > > > > It might also be worthwhile attaching the log file that causes the > > problem, if > > that's not a drama. :) > > Unfortunately I cannot post the entire log file or I'm sure to > cause heart attacks in my company. Maybe someone else could attach > a sample log file here and then I will try it out to see if the > problem is with my log file or my setup. > > > > > > When I run with debug mode on, here are the last few lines > before it > > > stops. > > > > > > <lots of stuff cut out> > > > FINE statcvs.input.FileBuilder <init>(): logging > > > db2/workflow/DB2_Product_Check_Status.wkf > > > FINE statcvs.input.FileBuilder <init>(): logging > > > db2/workflow/DB2_Product_Install.wkf > > > FINE statcvs.input.FileBuilder <init>(): logging > > > db2/workflow/DB2_Product_Uninstall.wkf > > > null > > > [tioadmin@jmcrae3 statcvs-0.2.2]$ > > > > > > Any ideas what is wrong? > > > My log is successfully parsed by cvstat (another tool) but I > want to use > > > cvsstat because it shows more information. > > > My machine is Redhat EL 3. > > > > > > Thanks > > > > > > Jeff > > > > Regards, > > James > > > > -- > > James Ring > > [attachment "att9369r.dat" deleted by Jeff McRae/Toronto/IBM] > > Jeff |
From: Jeff M. <jm...@ca...> - 2005-11-29 19:23:37
|
sta...@li... wrote on 2005-11-25 05:42:36 PM: > Hi Jeff, > > On Saturday 26 November 2005 01:58, Jeff McRae wrote: > > I tried to run cvsstat on my cvs log and I get > > > > [tioadmin@jmcrae3 statcvs-0.2.2]$ java -jar statcvs.jar > > /tmp/statcvs-0.2.2/cvs-log.txt /home/tioadmin/cvs/tcdriver > > StatCVS - CVS statistics generation > > > > null > > [tioadmin@jmcrae3 statcvs-0.2.2]$ > > I don't know if it matters or not, but which version of Java are you using? > (java -version) Java is java version "1.4.2" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2) Classic VM (build 1.4.2, J2RE 1.4.2 IBM build cxia321420-20040626 (JIT enabled: jitc)) > > It might also be worthwhile attaching the log file that causes the > problem, if > that's not a drama. :) Unfortunately I cannot post the entire log file or I'm sure to cause heart attacks in my company. Maybe someone else could attach a sample log file here and then I will try it out to see if the problem is with my log file or my setup. > > > When I run with debug mode on, here are the last few lines before it > > stops. > > > > <lots of stuff cut out> > > FINE statcvs.input.FileBuilder <init>(): logging > > db2/workflow/DB2_Product_Check_Status.wkf > > FINE statcvs.input.FileBuilder <init>(): logging > > db2/workflow/DB2_Product_Install.wkf > > FINE statcvs.input.FileBuilder <init>(): logging > > db2/workflow/DB2_Product_Uninstall.wkf > > null > > [tioadmin@jmcrae3 statcvs-0.2.2]$ > > > > Any ideas what is wrong? > > My log is successfully parsed by cvstat (another tool) but I want to use > > cvsstat because it shows more information. > > My machine is Redhat EL 3. > > > > Thanks > > > > Jeff > > Regards, > James > > -- > James Ring > [attachment "att9369r.dat" deleted by Jeff McRae/Toronto/IBM] Jeff |
From: James R. <sj...@jd...> - 2005-11-27 01:35:22
|
Hi all, This patch makes the author page display real names (if available). You can see an example of the output generated by this patch at http://xtuml.jdns.org/statcvs/user_u3957053.html Please note that only the page title is changed. No other output is affected. I'll also post this on the SourceForge patch tracker. Regards, James -- James Ring |
From: James R. <sj...@jd...> - 2005-11-27 01:28:28
|
Hi all, This patch makes the input/Builder class use the mappings obtained from the passwd file specified by the -passwd option. Authors are now created with the two-arg (String, String) constructor. It is possible for the second parameter to be null in the case where no mapping exists for the given user or no -passwd option is specified. I'll also put this into the patch tracker on Sourceforge. James -- James Ring |
From: James R. <sj...@jd...> - 2005-11-26 22:39:33
|
Hi Steffen, On Saturday 26 November 2005 12:00, Steffen Pingel wrote: > Hi, > > please post the patch to the SourceForge tracker: > > http://sourceforge.net/tracker/?group_id=3D57558&atid=3D484571 Done, thanks for the link. The patch is request ID 1367210. > Psersonally I often run StatCvs on a different machine than the one that > hosts the repository and has the passwd file with all login names. > Nevertheless I think the patch might be useful to a few people. > > StatCvs-XML has a similiar switch that is used to parse real names from t= he > maven project.xml file, therefore I think we may apply this patch as well. > > Richard, what is your opinon on the patch? > > Steffen Regards, James =2D-=20 James Ring |
From: Steffen P. <ste...@gm...> - 2005-11-26 05:00:36
|
Hi, please post the patch to the SourceForge tracker: http://sourceforge.net/tracker/?group_id=57558&atid=484571 Psersonally I often run StatCvs on a different machine than the one that hosts the repository and has the passwd file with all login names. Nevertheless I think the patch might be useful to a few people. StatCvs-XML has a similiar switch that is used to parse real names from the maven project.xml file, therefore I think we may apply this patch as well. Richard, what is your opinon on the patch? Steffen -- Steffen Pingel - ste...@gm... - http://steffenpingel.de |
From: James R. <sj...@jd...> - 2005-11-26 00:17:53
|
Hi all, This patch actually makes the command line parser recognise the -passwd option. Sorry, I left this out of the previous patch. Please apply. :) Regards, James -- James Ring |
From: James R. <sj...@jd...> - 2005-11-25 23:44:02
|
Hi all, I used StatCVS on a repository with 12 active authors, and I found it useful to be able to see their names alongside their usernames. The attached patch adds a -passwd <path> option to StatCVS, which allows you to specify the location of a Unix-style passwd file containing username->real name mappings. Users of cvs2cl will already be familiar with a similar feature in that utility. So, if you have a file that contains sjr:x:blah:blah:James Ring:blah jmd:x:blah:blah:Jon M. Doe:blah abc:x:blah:blah:Anne B. Collins:blah the -passwd option with this file will map the username sjr to "James Ring". This patch doesn't actually change the HTML or graph output of StatCVS. I'll send that patch in a follow-up e-mail. This should apply cleanly to the latest CVS (which I think is still the same as 0.2.2). Here's the diffstat: Main.java | 13 ++++++ input/Builder.java | 71 +++++++++++++++++++++++++++++++++++++ model/Author.java | 20 ++++++++++ output/ConfigurationOptions.java | 21 ++++++++++ 4 files changed, 123 insertions(+), 2 deletions(-) Please try it out! Regards, James -- James Ring |
From: James R. <sj...@jd...> - 2005-11-25 22:43:05
|
Hi Jeff, On Saturday 26 November 2005 01:58, Jeff McRae wrote: > I tried to run cvsstat on my cvs log and I get > > [tioadmin@jmcrae3 statcvs-0.2.2]$ java -jar statcvs.jar > /tmp/statcvs-0.2.2/cvs-log.txt /home/tioadmin/cvs/tcdriver > StatCVS - CVS statistics generation > > null > [tioadmin@jmcrae3 statcvs-0.2.2]$ I don't know if it matters or not, but which version of Java are you using?= =20 (java -version) It might also be worthwhile attaching the log file that causes the problem,= if=20 that's not a drama. :) > When I run with debug mode on, here are the last few lines before it > stops. > > <lots of stuff cut out> > FINE statcvs.input.FileBuilder <init>(): logging > db2/workflow/DB2_Product_Check_Status.wkf > FINE statcvs.input.FileBuilder <init>(): logging > db2/workflow/DB2_Product_Install.wkf > FINE statcvs.input.FileBuilder <init>(): logging > db2/workflow/DB2_Product_Uninstall.wkf > null > [tioadmin@jmcrae3 statcvs-0.2.2]$ > > Any ideas what is wrong? > My log is successfully parsed by cvstat (another tool) but I want to use > cvsstat because it shows more information. > My machine is Redhat EL 3. > > Thanks > > Jeff Regards, James =2D-=20 James Ring |
From: Jeff M. <jm...@ca...> - 2005-11-25 14:59:13
|
I tried to run cvsstat on my cvs log and I get [tioadmin@jmcrae3 statcvs-0.2.2]$ java -jar statcvs.jar /tmp/statcvs-0.2.2/cvs-log.txt /home/tioadmin/cvs/tcdriver StatCVS - CVS statistics generation null [tioadmin@jmcrae3 statcvs-0.2.2]$ When I run with debug mode on, here are the last few lines before it stops. <lots of stuff cut out> FINE statcvs.input.FileBuilder <init>(): logging db2/workflow/DB2_Product_Check_Status.wkf FINE statcvs.input.FileBuilder <init>(): logging db2/workflow/DB2_Product_Install.wkf FINE statcvs.input.FileBuilder <init>(): logging db2/workflow/DB2_Product_Uninstall.wkf null [tioadmin@jmcrae3 statcvs-0.2.2]$ Any ideas what is wrong? My log is successfully parsed by cvstat (another tool) but I want to use cvsstat because it shows more information. My machine is Redhat EL 3. Thanks Jeff |
From: Eric M. <erm...@gm...> - 2005-11-21 22:07:48
|
Here is the source for the class I wrote to integrate with Jcvsweb (http://www.jcvs.org/jcvsweb/) if anyone is interested. /** * */ package net.sf.statcvs.output; import java.util.HashSet; import java.util.Set; import net.sf.statcvs.model.CvsFile; import net.sf.statcvs.model.CvsRevision; import net.sf.statcvs.model.Directory; /** * @author ERMEANEY * */ public class JcvswebIntegration implements WebRepositoryIntegration { private String baseURL; private Set atticFileNames =3D new HashSet(); /** * */ public JcvswebIntegration(String baseURL) { if (baseURL.endsWith("/")) { this.baseURL =3D baseURL.substring(0, baseURL.length() - 1); } else { this.baseURL =3D baseURL; } } /* (non-Javadoc) * @see net.sf.statcvs.output.WebRepositoryIntegration#getName() */ public String getName() { return "JcvsWeb"; } /* (non-Javadoc) * @see net.sf.statcvs.output.WebRepositoryIntegration#getDirectoryUrl(= net.sf.statcvs.model.Directory) */ public String getDirectoryUrl(Directory directory) { String path =3D baseURL + "/HEAD/list/" + directory.getPath(); return path; } /* (non-Javadoc) * @see net.sf.statcvs.output.WebRepositoryIntegration#getFileHistoryUr= l(net.sf.statcvs.model.CvsFile) */ public String getFileHistoryUrl(CvsFile file) { return baseURL + "/HEAD/vers/" + file.getFilenameWithPath(); } /* (non-Javadoc) * @see net.sf.statcvs.output.WebRepositoryIntegration#getFileViewUrl(n= et.sf.statcvs.model.CvsFile) */ public String getFileViewUrl(CvsFile file) { return baseURL + "/HEAD/view/" + file.getFilenameWithPath() + "/" + file.getLatestRevision().getRevisionNumber(); } /* (non-Javadoc) * @see net.sf.statcvs.output.WebRepositoryIntegration#getFileViewUrl(n= et.sf.statcvs.model.CvsRevision) */ public String getFileViewUrl(CvsRevision revision) { return baseURL + "/HEAD/view/" + revision.getFile().getFilenameWithPath() + "/" + revision.getRevisionNumber(); } /* (non-Javadoc) * @see net.sf.statcvs.output.WebRepositoryIntegration#getDiffUrl(net.s= f.statcvs.model.CvsRevision, net.sf.statcvs.model.CvsRevision) */ public String getDiffUrl(CvsRevision oldRevision, CvsRevision newRevisi= on) { return baseURL + "/HEAD/pdiff/" + newRevision.getFile().getFilenameWithPath() + "/" + oldRevision.getRevisionNumber() + "/" + newRevision.getRevisionNumber(); } /* (non-Javadoc) * @see net.sf.statcvs.output.WebRepositoryIntegration#setAtticFileName= s(java.util.Set) */ public void setAtticFileNames(Set atticFileNames) { this.atticFileNames =3D atticFileNames; } } -- Eric Meaney erm...@gm... |
From: Richard C. <ri...@cy...> - 2005-10-18 10:46:58
|
James, On 18 Oct 2005, at 07:07, James Ring wrote: > In the case of my final year university group project, the > lecturers are > explicitly basing some of our assessment on the number of lines > contributed > to CVS. I think that this is a sorry situation, given how poorly a > simple > line count can represent somebody's input to a software engineering > project. True. In the words of Bill Gates: Measuring programming progress by lines of code is like measuring aircraft building progress by weight. (I love this quote. You teachers would probably hate it ;-) >> Link and some commentary on my weblog: >> http://dowhatimean.net/2005/10/cvs-and-performance > > You mention that the lack of correlation between code metrics and > access > patterns does not bode well for StatCVS. I don't think that it's > necessarily a bad thing... Finding correlations between student grades > and CVS activity is only one possible application > for a good tool such as StatCVS. > > For example, in an industry project, the project manager may use a > whole > bunch of statistics from various sources (including, but not > limited to, > StatCVS) to evaluate the health and progress of their project. > > I guess what I'm trying to say is that by not providing more > metrics, we'll > never see if any interesting correlations come up in unexpected > places. > > I'd certainly like to see some sort of Java code metrics as an "add- > on" > for StatCVS, like the ability to measure (for example) method fan-in > and fan-out in a Java project over time. That would certainly be interesting, but there are two issues: 1) It's programming language dependent, which limits the target audience. 2) I can't see how to present this in an end user application. If we have a graph of method fan-in over time, I can see everybody going: "OK, so method fan-in has risen 30% over the last half year. Now is this good or bad?" Richard > > The more stats, the merrier! > > >> Best, >> Richard >> >> > > Thanks, > James > -- > James Ring > > > |
From: James R. <sj...@jd...> - 2005-10-18 05:07:18
|
Hi Richard, > Hi all, > > I came across an interesting paper on using information from CVS > repositories to predict student performance. Summary: they found no > good performance indicators. The best one was plain ol' lines of code. In the case of my final year university group project, the lecturers are explicitly basing some of our assessment on the number of lines contributed to CVS. I think that this is a sorry situation, given how poorly a simple line count can represent somebody's input to a software engineering project. > Link and some commentary on my weblog: > http://dowhatimean.net/2005/10/cvs-and-performance You mention that the lack of correlation between code metrics and access patterns does not bode well for StatCVS. I don't think that it's necessarily a bad thing... Finding correlations between student grades and CVS activity is only one possible application for a good tool such as StatCVS. For example, in an industry project, the project manager may use a whole bunch of statistics from various sources (including, but not limited to, StatCVS) to evaluate the health and progress of their project. I guess what I'm trying to say is that by not providing more metrics, we'll never see if any interesting correlations come up in unexpected places. I'd certainly like to see some sort of Java code metrics as an "add-on" for StatCVS, like the ability to measure (for example) method fan-in and fan-out in a Java project over time. The more stats, the merrier! > Best, > Richard > Thanks, James -- James Ring |
From: Richard C. <ri...@cy...> - 2005-10-17 18:21:12
|
Hi all, I came across an interesting paper on using information from CVS repositories to predict student performance. Summary: they found no good performance indicators. The best one was plain ol' lines of code. Link and some commentary on my weblog: http://dowhatimean.net/2005/10/cvs-and-performance Best, Richard |
From: <in...@nh...> - 2005-09-16 11:24:25
|
$B"#<+8J>R2p"#(B $B!!Ev%5%$%H$OIaCJ$N;d@83h$dIW$KITK~$rJz$($F$k1|MM$dFH?H=w@-$N(B $B=8$^$j$G$9!#=w@-2q0w$N;q6b$r%a%$%s$G1?1D$7$F$*$j$^$9!#(B $B!!$3$NEY!"5.J}$N%"%+%&%s%H(B($BG[?.$5$l$?%"%I%l%9(B)$B$OEv2q0w@)%/%i(B $B%V$N!LFCJL=`2q0w!M$HG'Dj$5$l$^$7$?$N$G!"%a!<%k$G$*CN$i$;$5$;(B $B$FD:$-$^$7$?!#(B $B!!!!!!!!""4JC1$JL5NAEPO?$HF1;~$KFCJL2q0w$X0\9T""(B $B!!!!!!!!!!(Bhttp://www.flameblow.net?num=200 $B!LFCJL2q0w!M$NJ}$X2<5-FCE5$rMQ0U$7$F$*$j$^$9$N$G!"@'Hs$4MxMQ(B $B$7$F$_$F2<$5$$!#(B $B!z(B1,000$B1_J,L5NA%]%$%s%H(B $BG'>ZITMW$G!Z(B1,000$B1_![J,$NL5NA%]%$%s%H$r?JDhCW$7$^$9!#HV9fG'>Z8e$5$i$K(B12000$BJ,L5NA%]%$%s%H$4MxMQ$$$?$@$1$^$9(B!$BL5NA%]%$%s%H$G%a!<%k$N$d$j$H$j!"%W%m%U%#!<%k$N1\Mw!"<L??$N3NG'$J$I(B $BA4$F$N5!G=$,;H$($^$9$N$G!"$4<+M3$K$4MxMQ2<$5$$!#(B $B!z!L"(!MD>%a!<%kAw!"<u?.2DG=(B $BCO0h=w@-$N4uK>$h$j!":G?7EPO?>pJs$r<L%aE:IU$GG[?.$N>e!"D>%a$N(B $B>R2p$r9T$$$^$9!#4uK>0[@-$+$iD>@\5.J}$N08@h$K%a!<%k$,F~$C$F$/(B $B$k2DG=@-$b9b$$$N$G!"9%$_$N=w@->pJs$r?o;~%A%'%C%/$7$^$7$g(B $B$&!*!*!*(B $BFCJL2q0w$H$7$F$N$4F~>l$r$*BT$A$7$F$*$j$^$9!#(B $B!JFCJL2q0w0\9T(Bhttp://www.flameblow.net?num=200) $BG[?.ITMW$NJ}$O:!J}(B $B!Z(BReception refusal address$B![(B no...@he... |