Project administrators can give project members specific kinds of access to a whole Subversion repository or any path within that repository.
You can specify access permissions for users with a given role at the repository level, or at the path level within a repository.
How you use path-based permissions will depend on whether you view permissions primarily as a way to grant access or as a way to restrict access.
When you deny all access to a repository for a role, users with that role cannot see that the repository exists, except if:
Users with a role that has "View Only" access to a path can browse the contents of the repository on the Web site or by connecting directly to the repository from a client, such as Tortoise, CollabNet Desktop for Eclipse, or CollabNet Desktop for Visual Studio.
Users with a role that has "View and Commit" permission to a path can browse and download code, and can also check code into the repository.
You can create rules that use wilcards to control access to specific paths in a repository. See Wildcard-based access control and path-based permissions in TeamForge for more background information about wildcard and path based permissions.
Controlling access to a specific path in a branch using authz rules can be very time consuming and inefficient. Assume you have three branches, [/branches/foo/build], [/branches/bar/build], and [/branches/baz/build]. If you create authz rules, you may have to write a separate rule for every branch in the repository, let alone the fact that you need to write such rules for a branch you may create in the future.
[/branches/foo/build] @build = rw @dev = r
[/branches/bar/build] @build = rw @dev = r
[/branches/baz/build] @build = rw @dev = r
/branches/*/buildLater, you can create and assign roles to users such as "build engineers" and "developers" with "read-write" and "read-only" access permissions respectively.
In this scenario, assume that there is a particular file or folder pattern that needs access control in a repository. For example, you may want to restrict all users but release managers from modifying .iso files. It is impossible to define such a rule using the authz file.
/trunk/build/*.isoThis rule applies to all files and folders that end with .iso under the path /trunk/build.
In this scenario, assume that you want to control access to a particular folder no matter where the folder is in a branch. For example, you may want to control access to the “build” folder wherever it is in a repository. You can write a rule using wildcards such as:
/**/build
The "**" matches any number of folder levels in a repository. For example, this rule applies to the following paths:
/trunk/build
/branches/feature1/build
/trunk/external_module/build
/build
If two paths have different permissions, the permissions on the lower-level path take effect. For example, consider a role that has "No Access" set for the path /branches/version3/users, but has "View and Commit" access to /branches/version3/users/vijay. A user with this role can:
Users with this role cannot:
When users monitor a repository, they receive commit announcements by email that include the resources that their role permits them to see.
Users with a "No Access" role on a repository cannot monitor that repository to receive commit messages by email.
By default, commit emails provide all the details about the commit that a logged-in user can view in the Source Code application. A repository owner can elect to have the notification emails omit most of the detail and provide only the commit ID and the committer's user name.