Delivering these changes would introduce gaps
![]()
Don Yang (7.6k●21●105●137)
| asked Jul 26 '13, 2:50 a.m.
retagged Jun 25 '14, 2:34 p.m. by David Lafreniere (4.8k●7)
RTC 4.0.1 used
When the user delivers the changesets, the Eclipse client complains "Delivering these changes would introduce gaps". According to some discussions in the Forum, it suggests to use patch way or finding out dependency files to deliver the changesets altogether. These do not seem to apply to the customer's needs. The scenario is as below: 1) Suppose there are 100 changesets(the user has more than hundreds of changeset in the team) and each changeset has multiple files. 2) When delivering some changesets, they got "Delivering these changes would introduce gaps". When checking with one conflict files, they found there are 7 changesets owning the same files(those files have dependency). They only want to deliver 3 changesets out of the 7 changesets.(for example) and there are other files in those changesets having similar dependency files in other changesets. This means somehow the 100 changesets would have dependency as a chain. The question is: 1) Other than deliver all the 100 changesets because of their internal chain dependecies, if they only want to deliver some changesets, is there any way to achieve that? Another question is, 2) to avoid such chained dependent changesets(in Parallel development, file dependency seems to be unavoidable), is there any best practice the user can follow to minimize(at least) reaching to such extreme situation? Any suggestions are highly appreciated. |
2 answers
![]()
Ralph Schoon (62.3k●3●36●43)
| answered Jul 29 '13, 2:17 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER edited Jul 29 '13, 2:18 a.m.
Streams are for sharing in a team. Repository workspaces are your private sandbox you work against as a single user.
There are some few uses cases where you want to be able to have a repository workspace visible to the public.One of it is to allow your build system to load its data and do a build. (Keep in mind, the build does not change any data on a private workspace to avoid these issues.) There might be some more. In general I would not recommend to work with several users against one repository workspace. All mechanisms in RTC SCM are built to support changes from different repository workspaces flowing in and out of a stream against several repository workspaces. The whole Idea is to allow to isolate your personal state of work on the server and not forcing you to see changes from others, unless you want to. If you need the exact data of a repository workspace I would suggest to create a new repository workspace from that workspace and flow the data in. That way you can work on it in an isolated way and flow changes back to the original stream. I think you should, otherwise, not work against the same repository workspace with multiple users at all. For example you should not even work against the same repository workspace in parallel on one machine with different Eclipse instances. If you need to work on two instances, create a stream and two workspaces that flow against it. Otherwise you get all kinds of effects, like gaps or other conflicts, if you are not careful. RTC is built to allow sharing parallel work on stream level using flow targets, not on repository workspace level (although they are pretty much the same). Just my 2 cents. |
![]()
Ralph Schoon (62.3k●3●36●43)
| answered Jul 26 '13, 4:05 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER edited Jul 26 '13, 4:06 a.m.
Hi,
as far as i can tell, gaps happen if the user tries to deliver a specific change set and there are other change sets that are not in the stream that this one depends on. So the question is, how did the user get into that situation? I would review the reasons why and look at how to avoid it. One reason could be the user wants to only pick a specific change set from the outgoing changes. The change set has a change to a file but there is another, older, change set that changes this file too. I have seen that if customers try to implement cherry picking. You could minimize this by only having changes to one file in the change set. It does not completely remove the issue, but makes a bit easier to deal with it. I know of a customer who created some automation to enforce this. There are probably other reasons for this. One built in way provided by RTC to avoid this is to suspend work. This pulls the changes out and new work would not get entangled with the other work. You could do the changes isolated and deliver them. Resuming the suspended work would result in a merge, if you have conflicting changes. There is work ongoing to make this easier. See https://jazz.net/products/rational-team-concert/whats-happening#plan and https://jazz.net/jazz/web/projects/Rational%20Team%20Concert#action=com.ibm.team.workitem.viewWorkItem&itemId=_Q5xBtqC6EeCGUsd9CqIfuw Comments Thanks Ralph for the prompt answers and info.
1) The default is to check-in files to the current change set (the one with the blue triangle in Pending Changes). The idea is any file changes you make to your current task are related to each other. They are delivered together as one unit and can never be separated. This has the advantage of ensuring all necessary changes are delivered together.
2) This may not be avoidable at all. If one developers makes a change to file 1 for task 1 and delivers, other developers may accept the change and start working on task 2 that modifies file 1 as well. Once that happens, task 2's changes will depend on task 1's changes. You cannot deliver task 2 unless you also intend on delivering task 1's change sets.
Thanks Tim for the answers.
You can use a repository workspace the same way that you would use a stream, but with this model everything that I check in will become immediately visible to the rest of my teammates. Even if it doesn't compile. You also run a stronger risk of creating dependencies between work items. xxxxxx == Does that mean it is recommended to have each user having sandbox and own private repository workspace and flow target set as development stream shared on the whole dev team, and that would reduce the potentials to introduce the gaps on the same file by different users? If the repository is the public one shared by the all team, then it could be a problem? Daniel's suggestion is not recommended in any way. It is never good to load a repository workspace in different sandboxes because you run a high risk of desyncing one of the sandboxes. It's not horrible but you will frequently have to reload to sync your sandbox. The other issue is only the workspace owner can modify it so users can never share a repository workspace. Streams are there to act as a group workspace.
Thanks Tim and Ralph for the comments.
![]() FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Please have a look at https://jazz.net/products/rational-team-concert/whats-happening#plan for the relative order as known today.
The above discussion is accurate, and I'm not sure I can add any more suggestions that were not already mentioned. Since this question does involve gaps, I'd like to point out some new gap related features that do change the way users deal with gaps.
Below are some videos which show this feature:
showing 5 of 9
show 4 more comments
|