Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

Maven SCM Plugin for RTC

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

4

0 votes



104 answers

Permanent link
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).

0 votes

Comments

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


Permanent link
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?

0 votes

Comments

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.

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
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?

0 votes

Comments

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
 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?

0 votes

1–15 items
page 11of 7 pagesof 8 pagesof 9 pagesof 10 pagesof 11 pages

Your answer

Register or log in to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details
× 11,043
× 1,204
× 45

Question asked: Jul 20 '10, 3:41 p.m.

Question was seen: 122,049 times

Last updated: Oct 06 '16, 10:24 a.m.

Confirmation Cancel Confirm