It's all about the answers!

Ask a question

Maven SCM Plugin for RTC


0
4
David Lafreniere (4.7k7) | asked Jul 20 '10, 3:41 p.m.
FORUM MODERATOR / JAZZ DEVELOPER
edited Oct 06 '16, 10:24 a.m.
Please use this forum topic to discuss the ongoing development of the Maven SCM Plugin for RTC.

I would especially like to know how users intend to use the Maven SCM Plugin and especially the Maven Release plugin in the context of RTC.

What would really help is if you could provide a short description of what you feel each scm goal should do. (What would help even more if you could provide a sample Jazz SCM CLI line on exactly what you feel should be done).

Often difficulty occurs because we are bound to the Maven SCM Plugin framework, and the level of information supplied to us for each goal may be too little or to much in order to easily map it 1:1 to an RTC use case scenario. RTC SCM is great at being flexible for team (or even personal) use, but it also has many "things" that other traditional SCM systems do not.

Questions of discussion could be:

1. Should the checkin goal automatically create and "complete" a change set with the given message/comment every time the checkin goal is executed?. Should it also "deliver" this change set with every checkin goal? or should it just check in files to the existing change set?

2. The checkout goal allows an optional passed in ScmVersion Maven object. For example, the release-plugin calls this checkout goal in the release:perform goal and used this ScmVersion object to represent a "snapshot" which was created in the release:prepare goal. However Jazz RTC does not allow you to checkout (i.e. "load") a particular snapshot. Can we come up with an agreed upon action for this scenario?
2a. One option would be to temporarily create another repository workspace which is based on the given snapshot. This would allow the user to checkout the files properly. However one problem is that these SCM goals act against the workspace defined in the SCM URL (in the pom.xml), thus future goals such as (status or checkin) would be against the original repository workspace, and not the one we checked out of...

3. The "project structure" of Maven projects and RTC/Eclipse projects are different. Maven has the concept of "parent projects" in which entire child projects exist below a parent project, whereas in Eclipse/RTC each project generally exists at the same root level. At the surface this doesn't appear to be a problem, but some Maven users may not be able to do what they want with the Jazz SCM provider. In particular, Jazz SCM does not allow checking out a project underneath another checked out project (i.e. can't have a sandbox in a sandbox).
3a. Ex: During an initial test run of release:perform (after performing after a release:prepare), I saw that the supplied checkout directory was "<releaseProject>\target\checkout" (Which Jazz Scm cannot do).

Please see the following Wiki document for additional information.
https://jazz.net/wiki/bin/view/Main/BuildFAQ#Does_Jazz_Team_Build_support_Mav

104 answers



permanent link
Chris Graham (367714) | answered Apr 04 '15, 8:08 a.m.
So if my thinking is correct. All instances similar to:

        // Now that we have a list of files to process, we can "add" (scm checkin) them.
        JazzAddConsumer addConsumer = new JazzAddConsumer( repo, getLogger() );
        ErrorConsumer errConsumer = new ErrorConsumer( getLogger() );
        JazzScmCommand command = createAddCommand( repo, fileSet );

        int status = command.execute( addConsumer, errConsumer );
        if ( status != 0 || errConsumer.hasBeenFed() )
        {
            return new AddScmResult( command.getCommandString(),
                                     "Error code for Jazz SCM add (checkin) command - " + status,
                                     errConsumer.getOutput(), false );
        }

        return new AddScmResult( command.getCommandString(), addConsumer.getFiles() );
Will become:

        // Now that we have a list of files to process, we can "add" (scm checkin) them.
        JazzAddConsumer addConsumer = new JazzAddConsumer( repo, getLogger() );
        ErrorConsumer errConsumer = new ErrorConsumer( getLogger() );
        JazzScmCommand command = createAddCommand( repo, fileSet );

        int status = command.execute( addConsumer, errConsumer );
        if ( status != 0 )
        {
            return new AddScmResult( command.getCommandString(),
                                     "Error code for Jazz SCM add (checkin) command - " + status,
                                     errConsumer.getOutput(), false );
        }

        return new AddScmResult( command.getCommandString(), addConsumer.getFiles() );
Which is consistent with the other providers (that I checked).


Comments
Chris Graham commented Apr 04 '15, 8:09 a.m.

Damn it. How do we do block quotes????


permanent link
Eric Benzacar (41512) | answered Apr 13 '15, 2:02 p.m.
I appologize if this is not the correct forum to post this question, but there is something missing in the Jazz-SCM maven plugin documentation plugin on https://maven.apache.org/scm/maven-scm-providers/maven-scm-provider-jazz/index.html.

Under the section `Flow Targets`, the documentation reads:
deliver  or  accept  operates between a  repository workspace  and its flow target, normally a  stream  but could also be another  repository workspace . The  promote  is used to
Can someone please fill in the blank?  A `promote` is used to ... what?


Comments
Chris Graham commented Apr 13 '15, 9:30 p.m.

Hmmm. A very good question!

I'm moving through all of the upgrade pain at the moment, so once I get a working 4.0.6 env, which appears to be the most problematic of all of the releases (4.0.2-4.0.6), I'll address this one as well. Thanks for pointing it out. I'll go back and see what I can find from the original history. I'm not sure if it's been lost or the syntax (of the markup) is causing the loss.


Chris Graham commented Apr 13 '15, 9:43 p.m.

Nope. Looking at the history, I never finished the sentence, and you're the first one to pick it up. Thanks!

The "snapshot promote" command is used to promote the newly created tag (Snapshot in jazz terms) to it's flow target.

http://www-01.ibm.com/support/knowledgecenter/SSYMRC_3.0.1/com.ibm.team.scm.doc/topics/r_scm_cli_snapshot_promote.html

I've got a task to update and redo the doco, especially in the light of some bad habbits that people are doing, or simply not understood. I'll make sure that I fix this. Ta!


permanent link
Eric Benzacar (41512) | answered Apr 14 '15, 3:14 p.m.
Has there been any thought/work on porting the SCM Plugin to use the native Java RTC Api instead of deferring to the command-line client?

Comments
Chris Graham commented Apr 14 '15, 8:20 p.m.

Yes, and the answer is definately NO.

Why? Because the jazz libraries that are needed to build against are (C) IBM and not feely available.

Nor are they mavenized, and in central - nor will they ever be.

The intent of all providers is to be able to be built anywhere, by anyone, without having a native install of Jazz/RTC/TFS etc present.

Now, if they were to provide other means of achieving the same, ie, via a full rest interface or even a fat heavyweight SOAP interface (as they do in RAM), then you might be able to get away with it. TO my knowledge, they have not, nor are there any plans too.


permanent link
Eric Benzacar (41512) | answered Apr 16 '15, 3:38 p.m.
edited Apr 16 '15, 3:38 p.m.
 I am having a lot of trouble configuring my pom to get the SCM Jazz plugin to work (I've already posted a question to that extent).  

Do you by any chance have a working example using the plugin that I would be able to examine?

Your answer


Register or to post your answer.