Jump to content

Possible Bug when checking in changes from one branch to another


Recommended Posts


We have found this problem in both v and v4.1.10.372.

Here are the steps:

1. Current workspace is [branch A] and has pending changes

2. Create a child branch [branch B] off of [Main]

At this point everything appears to be correct.

3. Checkin workspace changes 'to a different branch'

4. Select an existing branch [branch B]

[branch B] now displays as a child of [branch A] instead of [Main]

I have a screencast of the branch explorer, but it may contain confidential information. I can send it to a codice software email address for review. In the meantime, I will also forward this to Pablo.

Link to comment
Share on other sites

Hello Stephen,

thanks for the detailed information in both forum and email :)

This is the regular behavior, I'll explain why.

The check-in changes to a different branch feature, as you know, needs an empty branch. We force that requirement to avoid merge operations and go straight forward to a clean solution, store the changes in an auxiliary place.

Why the branch base changes when you finally place the changes into a new changeset in that branch? Due to the branch base in Plastic SCM 4 is the parent of the first changeset in the branch. So, when we create the new changeset in the empty branch, the branch base flips to this new changeset parent.

What happens if we force to keep the base that the branch was having when it was empty? that we would need to run a merge operation. And as I said before, we do this to avoid a merge operation, later, of course you are able to merge that new changeset wherever you want to.

We prefer to do it in this way to create a clean changeset with the workspace which you can use later to perform merge or cherrypick operation, and as you can see the branch is still a main child branch by the name convention, only the branch base has change.

Link to comment
Share on other sites

Thanks for the reply.

We found [branch B] only contains items from [Main] plus the Checkin workspace changes 'to a different branch' changeset. It doesn't contain any of the changes in [branch A]. This is why we raised the flag here and wanted to bring this to your attention. It doesn't make much sense to me, or I am not understanding the reasoning behind this behavior. I think we would at least expect to see [branch A]'s data also on [branch B], but all that's there is [Main] and our item we checked in.

From the screenshots, We create a branch, then it displays in the BranchExplorer. Then we checkin our current pending changes from the current branch we are still on into the new branch. Then after we complete that, the BranchExplorer displays the new branch is a child of our current branch and the new branch only contains items from the Main branch + our checked in change. If the new branch is a child of [branch A], should it also have the changes from [branch A]?


[Edit - click the screenshots in sequence using their attached names ..0,1,2]




Link to comment
Share on other sites

Just to update.

the differences were correct, the issue was just misunderstanding at the time you want to compare two branches, right now we need to select one branch -> "Diff..." -> "Diff with other branch". We all in codice think that it's not very clear and we should implement the "select one branch" "select another" -> Diff, just like the changesets way.

Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...