Home | Forums

Subversion Symbolic Setup (tag/branch structure)

Since tags and branches in Subversion are implemented via directory copies, they are not really first-class concepts. You can describe what your tag/branch structure looks like, and FishEye will display that information as it would for CVS. These settings can be edited in the "Add Repository" or "Edit Repository" pages in the FishEye Admin screens.

For more information on tag/branch layout, see Repository Layout in the Subversion documentation.

The symbolic setup tells FishEye how to classify each path it encounters in the repository. Each path is classified as either a trunk, branch, tag or root path. The root category is used when a path does not match any of the given trunk/branch/tag settings and is mostly treated in the same way as trunk paths.

The symbolic settings do not exclude any paths from consideration by FishEye. To exclude paths you should set up appropriate "allow" rules. If your symbolic setup does not match a path, that path will be classified as a root path and processed by FishEye accordingly.
If you change these trunk/branch/tag settings, you will need to do a complete re-scan of the repository. You can do this from the Maintenance section.

Common layouts

There are two common repository layouts that you can choose from in FishEye. These layouts are described in Repository Layout.

The first is where there are top level trunk, branches and tags directories. This is called "/trunk/..., /branches/NAME/..., /tags/NAME/..." in FishEye.

The second is where the trunk, branches and tags directories are one level down, under each top-level project directory. This is called "/project/trunk/..., /project/branches/NAME/..., /project/tags/NAME/..." in FishEye.

Custom layouts

You can describe to FishEye any custom tag/branch structure you have. If you want to use one of the common layouts as a basis, first select it from the dropdown, then select "Custom" to edit/add rules.

When looking at a file on a branch, or a file that was tagged, FishEye needs to determine a "name" for the branch/tag. FishEye does this by matching a regular expression against the file's path, and extracting the name based upon the match. FishEye also needs a "name" for files on the trunk (in effect, this is the name of the trunk "branch").

For any file that matches a trunk/branch/tag regular expression, a "logical path" is calculated. Two different files with the same "logical path" are considered to be related. For example, using the second type of common repository layout:

  • The file project1/trunk/dir1/foo.txt would have a logical path of project1/dir1/foo.txt.
  • The file project1/tags/BUILD123/dir1/foo.txt would have a logical path of project1/dir1/foo.txt, and the name of the tag would be project1-BUILD123.
  • Both these files have the same logical path, and so are considered related. By looking at what revision the directory-copy for project1/tags/BUILD123/dir1/foo.txt occurred, FishEye can determine to what revision the tag project1-BUILD123 applies.

You can add as many rules as you need, for any given file the first rule that matches is used.

Regex The regular expression used to match against the start of the path. The trailing part of the path that does not match the regex is called the "tail".
Name An expression used to extract a tag or branch "name" from the regex.
Logical Path Prefix This is an expression used to construct the logical path. The logical path is the concatenation of the result of this expression, and the "tail" of the regex.