> Please suggest/discuss what is the best way to keep SVN commit and > JIRA issues linked together.
In your svn commit message, include a string identifying all the issues that the commit is related to. I usually put just the issue number(s) in the commit message, and put the description of what happened in the JIRA issue. When I want to add more details to the commit, I put the issue numbers at the beginning. So, in this case, if I had been checking it in, the commit message would have been "OPENJPA-357, OPENJPA-358". When I check in a patch from someone else, I say something like "OPENJPA-357. Applied foo's patch." This data is parsed by JIRA, and is visible if you hit the 'All' or 'Subversion Commits' link above the comments area. You can see an example of this at https://issues.apache.org/jira/browse/OPENJPA-293?page=com.atlassian.jira.plugin.ext.subversion:subversion-commits-tabpanel In that URL, I made a number of changes that resolved parts of the various issues (some of which are still open). So, I put additional content in the commit messages describing what each one does. When I do a commit that resolves an issue in its entirety, I just list the issue numbers. -Patrick On 9/8/07, Pinaki Poddar <[EMAIL PROTECTED]> wrote: > Kevin, > This is the first attempt to fix 357 & 358. I linked 357 to 358. > Also added a comment on 357 to link it to SVN revision 573750. > > Please suggest/discuss what is the best way to keep SVN commit and > JIRA issues > linked together. > > Pinaki Poddar > 972.834.2865 > > > >-----Original Message----- > >From: Kevin Sutter [mailto:[EMAIL PROTECTED] > >Sent: Saturday, September 08, 2007 12:41 PM > >To: dev@openjpa.apache.org > >Subject: Re: svn commit: r573750 - in /openjpa/trunk: > >openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ > >openjpa-kernel/src/main/java/org/apache/openjpa/meta/ > >openjpa-persistence/src/main/java/org/apache/openjpa/persistence/ > > > >Was this commit for OPENJPA-358 or OPENJPA-357, or both? :-) > >We need to remember to include the tag in the commit message > >so that we get the SVN changes in the JIRA Issues. Thanks! > > > >Kevin > > > >On 9/7/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > >> > >> Author: ppoddar > >> Date: Fri Sep 7 16:08:02 2007 > >> New Revision: 573750 > >> > >> URL: http://svn.apache.org/viewvc?rev=573750&view=rev > >> Log: > >> Fix for FetchGroup inclusion and recursion depth calculation. > >> > >> Modified: > >> > >> > >> > >openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/F > >> etchConfigurationImpl.java > >> > >> > >> > >openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Fet > >> chGroup.java > >> > >> > >> > >openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/per > >> sistence/AnnotationPersistenceMetaDataParser.java > >> > >> Modified: > >> > >openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/F > >> etchConfigurationImpl.java > >> URL: > >> > >http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/jav > >> > >a/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=573750&r1= > >> 573749&r2=573750&view=diff > >> > >> > >====================================================================== > >> ======== > >> --- > >> > >openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/F > >> etchConfigurationImpl.java > >> (original) > >> +++ > >> > >openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/F > >> etchConfigurationImpl.java > >> Fri Sep 7 16:08:02 2007 > >> @@ -604,6 +604,8 @@ > >> int cur; > >> for (int i = 0; max != FetchGroup.DEPTH_INFINITE > >> && i < groups.length; i++) { > >> + // ignore custom groups that are inactive in this > >> configuration > >> + if (!this.hasFetchGroup(groups[i])) continue; > >> cur = > >meta.getFetchGroup(groups[i]).getRecursionDepth(fm); > >> if (cur == FetchGroup.DEPTH_INFINITE || cur > max) > >> max = cur; > >> @@ -625,7 +627,7 @@ > >> return avail; > >> return Math.min(max, avail); > >> } > >> - > >> + > >> /** > >> * Return the relation type of the given field. > >> */ > >> > >> Modified: > >> > >openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Fet > >> chGroup.java > >> URL: > >> > >http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/jav > >> > >a/org/apache/openjpa/meta/FetchGroup.java?rev=573750&r1=573749&r2=5737 > >> 50&view=diff > >> > >> > >====================================================================== > >> ======== > >> --- > >> > >openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Fet > >> chGroup.java > >> (original) > >> +++ > >> > >openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Fet > >> chGroup.java > >> Fri Sep 7 16:08:02 2007 > >> @@ -21,9 +21,11 @@ > >> import java.io.Serializable; > >> import java.util.ArrayList; > >> import java.util.HashMap; > >> +import java.util.HashSet; > >> import java.util.Iterator; > >> import java.util.List; > >> import java.util.Map; > >> +import java.util.Set; > >> > >> import org.apache.commons.lang.StringUtils; > >> import org.apache.commons.lang.ObjectUtils; > >> @@ -74,6 +76,7 @@ > >> private final ClassMetaData _meta; > >> private final boolean _readOnly; > >> private List _includes; > >> + private Set _containedBy; > >> private Map _depths; > >> private Boolean _postLoad; > >> > >> @@ -171,6 +174,32 @@ > >> } > >> } > >> return false; > >> + } > >> + > >> + /** > >> + * Sets this receiver as one of the included fetch groups of the > >> given > >> + * parent. > >> + * The parent fecth grop must include this receiver > >before this call. > >> + * > >> + * @see #includes(String, boolean) > >> + * @see #addDeclaredInclude(String) > >> + */ > >> + public boolean setContainedBy(FetchGroup parent) { > >> + parent.addDeclaredInclude(this.getName()); > >> + if (_containedBy==null) > >> + _containedBy = new HashSet(); > >> + return _containedBy.add(parent.getName()); > >> + } > >> + > >> + /** > >> + * Gets the name of the fetch groups in which this > >receiver has been > >> + * included. > >> + * > >> + * @see #setContainedBy(FetchGroup) > >> + */ > >> + public String[] getContainedBy() { > >> + return (_containedBy == null) ? new String[0] > >> + : (String[]) _containedBy.toArray(new > >> String[_containedBy.size()]); > >> } > >> > >> /** > >> > >> Modified: > >> > >openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/per > >> sistence/AnnotationPersistenceMetaDataParser.java > >> URL: > >> > >http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/mai > >> > >n/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataPar > >> ser.java?rev=573750&r1=573749&r2=573750&view=diff > >> > >> > >====================================================================== > >> ======== > >> --- > >> > >openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/per > >> sistence/AnnotationPersistenceMetaDataParser.java > >> (original) > >> +++ > >> > >openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/per > >> sistence/AnnotationPersistenceMetaDataParser.java > >> Fri Sep 7 16:08:02 2007 > >> @@ -875,6 +875,14 @@ > >> > >> /** > >> * Create fetch groups. > >> + * If FetchGroup A includes FetchGroup B, then a bi-link is set > >> between > >> + * A and B. Both A and B must be declared in the same Class. > >> + * <br> > >> + * Call [EMAIL PROTECTED] #parseFetchAttribute(ClassMetaData, > >> + * org.apache.openjpa.meta.FetchGroup, FetchAttribute) > >only after the > >> + * bi-links have been established, because a field f will not > >> + only > >> add the > >> + * fetch group A which explictly includes f to its custom fetch > >> groups but > >> + * also will also add any fetch group B that includes A. > >> */ > >> private void parseFetchGroups(ClassMetaData meta, FetchGroup... > >> groups) { > >> org.apache.openjpa.meta.FetchGroup fg; @@ -885,12 +893,25 @@ > >> fg = meta.addDeclaredFetchGroup(group.name()); > >> if (group.postLoad()) > >> fg.setPostLoad(true); > >> - for (String s : group.fetchGroups()) > >> + for (String s : group.fetchGroups()) { > >> fg.addDeclaredInclude(s); > >> + } > >> + } > >> + > >> + for (FetchGroup group:groups) { > >> + fg = meta.getFetchGroup(group.name()); > >> + String[] includedFetchGropNames = > >> + fg.getDeclaredIncludes > >> (); > >> + for (String > >> includedFectchGroupName:includedFetchGropNames) > >> + meta.getFetchGroup > >> (includedFectchGroupName).setContainedBy(fg); > >> + } > >> + > >> + for (FetchGroup group : groups) { > >> + fg = meta.getFetchGroup(group.name()); > >> for (FetchAttribute attr : group.attributes()) > >> parseFetchAttribute(meta, fg, attr); > >> } > >> } > >> + > >> > >> /** > >> * Set a field's fetch group. > >> @@ -904,6 +925,9 @@ > >> meta, attr.name())); > >> > >> field.setInFetchGroup(fg.getName(), true); > >> + String[] parentFetchGroups = fg.getContainedBy(); > >> + for (String parentFetchGroup:parentFetchGroups) > >> + field.setInFetchGroup(parentFetchGroup, true); > >> if (attr.recursionDepth() != Integer.MIN_VALUE) > >> fg.setRecursionDepth(field, attr.recursionDepth()); > >> } > >> > >> > >> > > > > Notice: This email message, together with any attachments, may contain > information of BEA Systems, Inc., its subsidiaries and affiliated > entities, that may be confidential, proprietary, copyrighted and/or > legally privileged, and is intended solely for the use of the individual or > entity named in this message. If you are not the intended recipient, and have > received this message in error, please immediately return this by email and > then delete it. > -- Patrick Linskey 202 669 5907