It's all about the answers!

Ask a question

Need assistance with SCM scenario


Robert Elliott (101116) | asked Jul 20 '10, 8:02 a.m.
Developing a solution for a customer which involves a few hoops. Assume a basic SCM scenario with one component and the mainline stream. A group of users would be in RTC and use it as normally. A second group of external users would have no access to RTC or would have a different implementation of RTC with no connections between the two.

As the internal team worked on code, they would deliver and generate baselines as normal. When a bug was found, the bug and latest baseline would need to be distributed to the external team to be resolved.

Our assumption at this point would be to utilize the build engine (no actual compiling) to place the latest baseline code out on a file server where external users could retrieve it. They would modify the code and upon completion update the file server with the new files. I would assume we could then run a build which would retrieve the files and execute a command to import these files back into RTC.

There are a number of issues I am concerned with using such an approach - the first being is it technically feasible and efficient? Add to that the possibility for simultaneous development both internally and externally, files being modified both under SCM and outside of SCM, the concern that external users are modifying the correct code base, and how we manage to track the various changes within RTC without losing version history and I begin to question my long-term sanity.

Is anyone doing anything like this? What is Rationals standard approach to managing source code in RTC when part of the team has no access to SCM? What else can go wrong in the above scenario? What can go right? Is there an alternative approach I am missing? Would ClearCase be a better solution given the scenario?

7 answers



permanent link
Robert Elliott (101116) | answered Jul 20 '10, 8:13 a.m.
Let me offer a restatement of the question using RTC and open source as a potential scenario.

RTC is developed internally by Rational. The source code is selectively made public to the community at large - thousands of people. Members of that community have various baselines of the codebase and are actively creating "fixes" to the codebase on their local machines but have no access to the source.

How would you manage those community fixes and incorporate them back into RTC?

permanent link
Geoffrey Clemm (30.1k33035) | answered Jul 20 '10, 3:26 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
The only way to keep the source code under control is to have all users
use the SCM system. So assuming that you cannot give the external users
controlled access to the internal RTC repository (with suitable access
control), you should give the external users their own RTC repository.
In RTC-3.0, you will be able to deliver change sets between
repositories, so assuming that there is an internal user that can access
both the internal and external repositories, then that user can transfer
changes between the two repositories.

Question for the RTC SCM developers: Is it possible in 3.0 to deliver
between repositories even when no single user has access to both
repositories? If not, then you might want to consider ClearCase
multi-site which allows data to be replicated between sites even when
there is no network connectivity between them.

Cheers,
Geoff

On 7/20/2010 8:08 AM, rpelliottjr wrote:
Developing a solution for a customer which involves a few hoops.
Assume a basic SCM scenario with one component and the mainline
stream. A group of users would be in RTC and use it as normally. A
second group of external users would have no access to RTC or would
have a different implementation of RTC with no connections between
the two.

As the internal team worked on code, they would deliver and generate
baselines as normal. When a bug was found, the bug and latest
baseline would need to be distributed to the external team to be
resolved.

Our assumption at this point would be to utilize the build engine (no
actual compiling) to place the latest baseline code out on a file
server where external users could retrieve it. They would modify the
code and upon completion update the file server with the new files. I
would assume we could then run a build which would retrieve the files
and execute a command to import these files back into RTC.

There are a number of issues I am concerned with using such an
approach - the first being is it technically feasible and efficient?
Add to that the possibility for simultaneous development both
internally and externally, files being modified both under SCM and
outside of SCM, the concern that external users are modifying the
correct code base, and how we manage to track the various changes
within RTC without losing version history and I begin to question my
long-term sanity.

Is anyone doing anything like this? What is Rationals standard
approach to managing source code in RTC when part of the team has no
access to SCM? What else can go wrong in the above scenario? What
can go right? Is there an alternative approach I am missing? Would
ClearCase be a better solution given the scenario?

permanent link
Robert Elliott (101116) | answered Jul 21 '10, 8:22 a.m.
Hi Geoffrey,

Thanks, I understand the loss of SCM control over the files and am advising against it. I have also pointed out to the customer 3.0 will offer several benefits we are eager to leverage - cross repository changesets, policies on rebaselining and possibly, although I am not optimistic, the abiliity to use read/write permissions on directories/files within a component.

All that being said, assume the customer doesn't care about the items remaining under source control through-out the entire process. Further assume there is no common connectivity across the board. To top it off, assume this is a 1.0.1.1 environment today and for the foreseeable future.

There is code in RTC SCM. At times, this code will be exported and thrown "over the fence" onto a ftp server. Various individuals, none with access to the RTC server, will retrieve those files, although none would be working on same file. The files are modified on their local workstations (where they may or may not use some source control system of their own) and then placed back on the ftp server. They then want to import those files back into RTC SCM.

In other words, the customer is looking for us to provide a bridge between RTC and "any" external development using the RTC build engine to do exports and imports of the source code.

Is it doable? Can it be automated using the build system to execute SCM command line scripts to do the export and import?

After those questions are answered, of course, the question becomes is it advisable and more importantly, is there an alternative solution which would be better? The big issue is the customer doesn't want to add thousands of potential users to the project and maintain those ids nor can they require these "external" developers to use RTC for source control.

I look forward to your reply. Thank you.

permanent link
Ralph Schoon (63.3k33646) | answered Jul 21 '10, 1:40 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Hi,

Geoff is most likely the best one to answer your questions.

However one Idea that pops up in my mind is: if the shared file system location would be a loaded repository workspace loaded e.g. using commandline scm or the build engine if one copies over changes these could be checked in.

Maybe then a user could do the deliver and merge duty? Not sure this is feasible. I would be concerned however what would happen with structural changes, eg. if files are moved or renamed.

Ralph

permanent link
Geoffrey Clemm (30.1k33035) | answered Jul 22 '10, 12:13 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
You can certainly have an "import workspace" for each "external" group
(just a standard rtc repository workspce allocated for interaction with
that external group) , and whenever you want to "synchronize" what
they've been doing into the RTC repository, copy their current source
tree into that workspace, checkin all the changes, then accept all
changes from the RTC stream into that import workspace, resolve any
conflicts, and then copy the result back out to the external group.

But as Ralph points out, any moves/renames with this process will look
like a delete/create (delete of the original file, create of a new file
with the new name). This means any subsequent changes to that file
within RTC will be "lost" during the merge, because the file to which
those changes have been applied will have been "deleted". So that's why
I strongly encourage you to do whatever you can to advise the customer
against this approach.

One thing caught my eye ... the customer refuses to upgrade from
RTC-1.0.1.1. Can you explain why? Are they not paying for maintenance,
or is there some technical reason they aren't upgrading?

Also, are all the external groups too large that they can't use the new
10-included version of RTC express?

Cheers,
Geoff

On 7/21/2010 8:23 AM, rpelliottjr wrote:
Hi Geoffrey,

Thanks, I understand the loss of SCM control over the files and am
advising against it. I have also pointed out to the customer 3.0
will offer several benefits we are eager to leverage - cross
repository changesets, policies on rebaselining and possibly,
although I am not optimistic, the abiliity to use read/write
permissions on directories/files within a component.

All that being said, assume the customer doesn't care about the items
remaining under source control through-out the entire process.
Further assume there is no common connectivity across the board. To
top it off, assume this is a 1.0.1.1 environment today and for the
foreseeable future.

There is code in RTC SCM. At times, this code will be exported and
thrown "over the fence" onto a ftp server. Various
individuals, none with access to the RTC server, will retrieve those
files, although none would be working on same file. The files are
modified on their local workstations (where they may or may not use
some source control system of their own) and then placed back on the
ftp server. They then want to import those files back into RTC SCM.

In other words, the customer is looking for us to provide a bridge
between RTC and "any" external development using the RTC
build engine to do exports and imports of the source code.

Is it doable? Can it be automated using the build system to execute
SCM command line scripts to do the export and import?

After those questions are answered, of course, the question becomes is
it advisable and more importantly, is there an alternative solution
which would be better? The big issue is the customer doesn't want to
add thousands of potential users to the project and maintain those ids
nor can they require these "external" developers to use RTC
for source control.

I look forward to your reply. Thank you.

permanent link
Robert Elliott (101116) | answered Jul 22 '10, 8:35 a.m.
You can certainly have an "import workspace" for each "external" group
(just a standard rtc repository workspce allocated for interaction with
that external group) , and whenever you want to "synchronize" what
they've been doing into the RTC repository, copy their current source
tree into that workspace, checkin all the changes, then accept all
changes from the RTC stream into that import workspace, resolve any
conflicts, and then copy the result back out to the external group.



This sounds very much like a manual process requiring human intervention. Am I correct? Or can I use the build process to perform these tasks automatically?

The customer plans to get to 2.x at some point. They are facing a technical issue due to some custom integration and it is delaying any migration to 2.x. The timelines are getting to the point where I question whether it makes sense to go to the effort to move to 2.x when 3.x will be here. In all likelihood, they may end up staying several versions behind the RTC development cycle, eg. the 1.x stuff was deployed after 2.x had already been out a while.

The external group is a pool of potentially thousands of resources. There is no way of knowing which member of that pool may work on something so you either must have a rapid approach to adding a specific user to a PA or you must include all the potential users in the PA. The customer is unwilling to create and maintain all those ids. Think about my RTC/Open Source example above.

Thanks for any additional guidance you can provide. In short, customer doesn't like the need to manually flow changes, doesn't want to have to add thousands of users to the project, and wants to automate any code movement both within the internal team and of course with any code created by users external to RTC.

permanent link
Ralph Schoon (63.3k33646) | answered Jul 22 '10, 12:45 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER


This sounds very much like a manual process requiring human intervention. Am I correct? Or can I use the build process to perform these tasks automatically?


Robert,

You can probably overwrite a repository workspace automatically - with the issues Geoff pointed out. However if you want to consolidate the data into a stream there is no way around a manual merging process. This will most likely be true as long as more than one human works on the same files.

I concur with Geoff, and would like to point out that these options are limp along modes. I have heard about similar scenarios at other customers with any available scm system for several reasons. These scearios always cause considerable pain and issues.

3.0 and the option Geoff pointed out would be a way better, higher quality and safer mode of operation.

Ralph

Your answer


Register or 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.