Need assistance with SCM scenario
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
Ralph Schoon (63.4k●3●36●46)
| answered Jul 22 '10, 12:45 p.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
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 |
You can certainly have an "import workspace" for each "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. |
Geoffrey Clemm (30.1k●3●30●35)
| 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, |
Ralph Schoon (63.4k●3●36●46)
| 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 |
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. |
Geoffrey Clemm (30.1k●3●30●35)
| 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. |
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? |
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.