It's all about the answers!

Ask a question

How to resolve false gaps when accepting baselines?

Steffen Weik (346) | asked Mar 21 '22, 7:30 a.m.
edited Mar 21 '22, 7:41 a.m.
I try to accept baselines in eclipse. Most are empty some contain some change sets in addition to those that are already in my repository workspace. When I just try to accept all or even just a single baseline then the eclipse RTC client tells me that the action would introduce gaps, but without the option to accept all or merge! I think that dialog was popping up on my first attempt and I selected that it should just accept everything, but it did not work then. Since then I just get the error dialog without any options.

In the meantime I just expanded all the baselines and accepted all change sets one by one. That worked! So my repository workspace now does not miss any single change set of the stream anymore!

But still, when I try to accept the baselines, then I get that weird error message.

I once had the same issue before and just opened the repository workspace within another instance of eclipse, without to load that workspace there. I just opened the pending changes view for that repository workspace, accepted all changes into the unloaded repository workspace and it worked fine. In my main eclipse I then just had to reload the projects again, because it believed that now things were out of sync. I never loaded the repo workspace in the other eclipse but, well that workaround worked fine.

But now not even the workaround works anymore!

Could anyone please tell me how I can accept the empty base lines such that I do not need to collect the missing baselines in my pending changes view forever?

2 answers

permanent link
Steffen Weik (346) | answered Mar 21 '22, 9:54 a.m.
Now with a little time elapsed everything works again.
There now was 1 additional change set. That change set was NOT part of any of the baselines that I tried to accept at the beginning. Actually that change set was not part of any baseline at all so far (at least none that was visible in my pending changes)! However, after I accepted that one, everything worked fine.

I do not understand why. And this is not the first time that such strange things happen to me. Is there some strange caching implemented? Might that cache get invalidated after some time, perhaps when a connections gets initialized again internally?

Whatever, I can continue to work now, so I am happy :-)

Ralph Schoon commented Mar 21 '22, 10:22 a.m.

Gap handling is described here: what happens and why. I would suggest to have a look. Maybe there is something in how you work that causes frequent gaps?

Steffen Weik commented Apr 01 '22, 7:47 a.m.
Sadly that documentation does not talk about baselines. But now I have the same issue again: all change sets accepted, but in one component I have one baseline left to accept. The baseline does not contain any additional change set, it just provides another "name" or "tag" for some state in the history of my component. But when I right click on the baseline and select accept, or when I try to accept all changes, then I just get the following error message, in a dialog that only provides the "Ok" button and a "Details" button (but there are no additional details):

Problems occurred running accepting change sets.

Gaps encountered in chagne history performing accept operation.You are trying to accept a subset of change sets but they need to be accepted together because of dependencies between them.

Steffen Weik commented Apr 01 '22, 8:09 a.m.
Ok, I narrowed it down:
At first some details on my setup:
I have a repository workspace, connected to 2 streams, the main dev stream and a feature stream. That way I can merge in changes from main and continue development on the feature stream. I just need to switch the incoming stream back and forth between main stream and feature stream.

The issue occurred while incoming was set to feature stream:
no incoming change sets, but one additional incoming baseline
But I was not able to accept the baseline because it would introduce gaps. Just I did not see any missing change set.

I now switched back the incoming stream to main:
several incoming baselines (which got created meanwhile by Jenkins builds), one single additional change set within one of these baselines.

I was able to accept all of these, yippie :-)

Then I switched back incoming to the feature stream and delivered everything to that one.

Steffen Weik commented Apr 01 '22, 8:22 a.m.
I gues that the following happened: someone accepted all change sets of a baseline from main. Then delivered those change sets and the base line to the features stream.

But on delivery the one missed one change set of the baseline!    (1)

Then I got 1 incomming change set and 1 incomming base line. I was able to accept the change set but not the baseline which would now miss 1 changeset.

Other possibility: the colleague already had accepted an incomplete state from main with 1 baseline but missing 1 changeset.    (2)

Then the one would also have delivered the incomplete baseline to the feature stream.

Both scenarios (1) and (2) should not be possible.

I did not finally prove any of the scenarios and I did not reproduce any so far. But how else could it be that I see no incoming change sets from feature stream but one empty incoming baseline but get the gap error on the attempt to accept the baseline?

permanent link
Ralph Schoon (62.9k33645) | answered Apr 01 '22, 7:50 a.m.

Please consider to open a case with support. The baselines are just defining a specific configuration. When you accept an incoming baseline or deliver an outgoing baseline I don't see how this could create an issue with gaps. Only change sets should have gaps. 

Your answer

Register or to post your answer.