Subversion Changeset Parents and Branches
Why do some changesets have more than one branch? Why do these changesets have more than one parent?
In Subversion, a single changeset can have files and directories that are on different branches, as defined by the SVN tag and branch structure. In this situation, the changeset is considered to be on all of the branches of its constituent file revisions. If a changeset is on more than one branch it can have a parent changeset of each of its branches, giving the changeset multiple parents.
Fisheye does not track SVN merges, so merges are not indicated on the graph.
When I create a complex branch, how does Fisheye determine which is its parent changeset? When I create a complex tag, how does Fisheye decide which changeset to tag?
In Subversion, a simple branch or tag is created by copying a source directory, e.g. copying "
/trunk" to "
/branches/branch1" or "
/tags/tag1". The tag or branch is considered complex if a part of the copied directory is replaced with another version, e.g."
/trunk" is copied to "
/tags/tag1", and then "
branches/branch1/dir1" is copied to "
For the purpose of the commit graph, Fisheye looks at where the root directory was copied from, to determine where the branch or tag originated. In the example above, the label "
tag1" would be applied to the latest changeset on trunk when the tag was created, even though part of the tag was copied from branch1. This only affects the annotation of the changeset, not the file revisions that are tagged — the tagged file revisions are still those on
branch1 as appropriate.