Maven Changelog Plugin
  1. Maven Changelog Plugin
  2. MCHANGELOG-79

Add support for "tag" type report of Subversion

    Details

    • Type: Improvement Improvement
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:
      None
    • Patch Submitted:
      Yes
    • Number of attachments :
      4

      Description

      Currently, Changelog plugin don't support Subversion's tag.
      This patch make The "tag" type report available even if you are using Subversion.
      This gets each revision of tags in Subversion system, and generates the log-report between those revisions.

      For example, assume you have following repositoy structure:

      http://example.com/svn/project
               +trunk/
               |    +src/
               |      ...
               +tags/
               |    +1.0/
               |    +1.1/
               |    +1.2/
               |    +2.0/
               |    +2.1/
               +branches/
                    +1.x/
      

      To generate svn log's between 1.1 and 1.2 tag in 1.x branch:
      [pom.xml]

        ...
        <!-- Subversion repositoy -->
        <scm>
          <!-- svn connection -->
          <connection>scm:svn:http://example.com/svn/project</connection>
        </scm>
        ...
        <reporting>
          <plugins>
            <!-- changelog-plugin -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-changelog-plugin</artifactId>
              <version>2.2.1</version>
              <configuration>
                <!-- type is "tag" -->
                <type>tag</type>
                <tags>
                  <!-- between 1.1 and 1.2 tag -->
                  <tag implementation="java.lang.String">1.2</tag>
                  <tag implementation="java.lang.String">1.1</tag>
                </tags>
                <!-- in 1.x branch -->
                <branchBase>branches/1.x</branchBase>
                <!-- encoding -->
                <outputEncoding>Windows-31J</outputEncoding>
              </configuration>
            </plugin>
          </plugins>
        </reporting>
        ...
      

      To generate svn log-report between 2.1 and 2.0 tag in trunk:
      [pom.xml]

       ...
       <!-- Subversion repositoy -->
        <scm>
          <!-- svn connection -->
          <connection>scm:svn:http://example.com/svn/project</connection>
        </scm>
        ...
        <reporting>
          <plugins>
            <!-- changelog-plugin -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-changelog-plugin</artifactId>
              <version>2.2.1</version>
              <configuration>
                <!-- type is "tag" -->
                <type>tag</type>
                <tags>
                  <!-- between 2.1 and 2.0 tag -->
                  <tag implementation="java.lang.String">2.0</tag>
                  <tag implementation="java.lang.String">2.1</tag>
                </tags>
                <!-- in trunk (Default brancheBase is trunk. So, branchBase
                     element is optional when to use trunk. ) -->
                [<branchBase>trunk</branchBase>]
                <!-- encoding -->
                <outputEncoding>Windows-31J</outputEncoding>
              </configuration>
            </plugin>
          </plugins>
        </reporting>
        ...
      

        Issue Links

          Activity

          Hide
          Jerome Lacoste added a comment -

          New version of the patch.

          The original patch wasn't working for me when testing changelogs for various tags. The problem was caused by the way the SvnInfoCommand was used, and the way plexus-utils has evolved I guess: the executed command ended up being:

          cd $workingDir$svnTag && ....

          causing the command line to fail.

          I've forked the SvnInfoCommand into an SvnInfoCommandExpanded and packaged it into the changelog plugin to make it quick to test the changes. The proper fix would be to propagate the changes of SvnInfoCommandExpanded into the maven-svm-provider-svn project.

          I haven't tested all use cases specified by this patch and chose to let the original code as much as possible. I haven't added unit tests...

          Let me know if you need further info/code.

          Show
          Jerome Lacoste added a comment - New version of the patch. The original patch wasn't working for me when testing changelogs for various tags. The problem was caused by the way the SvnInfoCommand was used, and the way plexus-utils has evolved I guess: the executed command ended up being: cd $workingDir$svnTag && .... causing the command line to fail. I've forked the SvnInfoCommand into an SvnInfoCommandExpanded and packaged it into the changelog plugin to make it quick to test the changes. The proper fix would be to propagate the changes of SvnInfoCommandExpanded into the maven-svm-provider-svn project. I haven't tested all use cases specified by this patch and chose to let the original code as much as possible. I haven't added unit tests... Let me know if you need further info/code.
          Hide
          Dave Meibusch added a comment -

          Minor issue with this patch: the StartVersion and EndVersion are not correctly read in from the change set XML file.
          Tracked this down to ChangeLogHandler class, it looks for startTag and endTag attributes rather than startVersion / endVersion.

          The symptoms are that the report, if reading from pre-generated XML file with have heading "Changes since project creation" rather than expected "Changes between...". Note that the File and Developer Activity reports re-read this file and exhibit this issue.

          Show
          Dave Meibusch added a comment - Minor issue with this patch: the StartVersion and EndVersion are not correctly read in from the change set XML file. Tracked this down to ChangeLogHandler class, it looks for startTag and endTag attributes rather than startVersion / endVersion. The symptoms are that the report, if reading from pre-generated XML file with have heading "Changes since project creation" rather than expected "Changes between...". Note that the File and Developer Activity reports re-read this file and exhibit this issue.
          Hide
          Dennis Lundberg added a comment -

          Jerome, I had a look at the patch file. It seems to be made from GIT. Can you supply a standard svn diff instead?

          Show
          Dennis Lundberg added a comment - Jerome, I had a look at the patch file. It seems to be made from GIT. Can you supply a standard svn diff instead?
          Hide
          Robin Pradel (now known as r0bb3n) added a comment -

          Is there any activity on this feature request? Where can I find a beta-build for testing?

          Show
          Robin Pradel (now known as r0bb3n) added a comment - Is there any activity on this feature request? Where can I find a beta-build for testing?
          Hide
          Samuel Van Reeth added a comment - - edited

          I created a new patch for this problem.

          It is a new implementation, using the forked SvnInfoCommandExpanded class from Jerome Lacoste but without the SvnTrunkChangeLogCommand class and without the need for the branchBase property.

          @Dave: check issue MCHANGELOG-108 - read/write changelog.xml inconsistency

          Show
          Samuel Van Reeth added a comment - - edited I created a new patch for this problem. It is a new implementation, using the forked SvnInfoCommandExpanded class from Jerome Lacoste but without the SvnTrunkChangeLogCommand class and without the need for the branchBase property. @Dave: check issue MCHANGELOG-108 - read/write changelog.xml inconsistency
          Hide
          Tom Briers added a comment -

          Hi,
          I applied the patches on a personnel checkout and I do not think this is correct.

          What seems to be done is the following:

          • get revision of tag A
          • get revision of tag B
          • execute svn --non-interactive log -v -r revA:revB svn://theUrlToTheRepositoryOfYourCurrentCheckout

          I think the correct way is:

          • get revision of tag A
          • get revision of tag B
          • execute svn --non-interactive log -v -r revA:revB svn://theUrlToTheTagB
          Show
          Tom Briers added a comment - Hi, I applied the patches on a personnel checkout and I do not think this is correct. What seems to be done is the following: get revision of tag A get revision of tag B execute svn --non-interactive log -v -r revA:revB svn://theUrlToTheRepositoryOfYourCurrentCheckout I think the correct way is: get revision of tag A get revision of tag B execute svn --non-interactive log -v -r revA:revB svn://theUrlToTheTagB
          Hide
          Jörg Sesterhenn added a comment - - edited

          Could you please release this? I'd prefer a solution with minor Bugs to no solution at all.

          I filed a new related request: MCHANGELOG-137.

          Show
          Jörg Sesterhenn added a comment - - edited Could you please release this? I'd prefer a solution with minor Bugs to no solution at all. I filed a new related request: MCHANGELOG-137 .

            People

            • Assignee:
              Unassigned
              Reporter:
              Kinugasa Noriko
            • Votes:
              17 Vote for this issue
              Watchers:
              12 Start watching this issue

              Dates

              • Created:
                Updated: