This page describes attributes used by the repository server and repository tools. (It doesn't yet describe all of them fully, but that's the plan.)

Of course users and new client applications can set other attributes with vattrib or the repository's VestaSource API. This page is meant to descibe those attributes used by the core Vesta tools.

Note that attributes which start with a pound sign (#) are considered access control attributes and are treated differently in some ways (e.g. during replication).

checkin-by

The user who performed a checkin as a global name (username@realm). Set by vcheckin. Found on checked-in versions and session directories.

checkin-time

A string representation of the time that a checkin was performed. The exact format of this string is controlled by the [UserInterface]TimeFormat configuration setting, which is used with stftime(3). Set by vcheckin. Found on checked-in versions and session directories.

checkout-by

The user who performed a checkout as a global name (username@realm). Set by vcheckout. Found on version reservation stubs, working directories, session directories, and checked-in versions. Set by vcheckout. Found on

checkout-from

A repository server specification (host:port) pointing to the remote master repository where an object was originally created. Used when a checkout is performed at a repository with a non-master replica. Set by vcheckout. Found on version reservation stubs and session directories. Read from the reservation stub by vcheckin to replicate a new version back to the rmeote master repository.

checkout-time

A string representation of the time that a checkout was performed. The exact format of this string is controlled by the [UserInterface]TimeFormat configuration setting, which is used with stftime(3). Set by vcheckout. Found on version reservation stubs, working directories, session directories, and checked-in versions.

checkout-to

A repository server specification (host:port) pointing to the local repository of a checkout (i.e. where the working directory is, where snapshots are taken with vadvance, and where the new version will be checked in). Used when a checkout is performed at a repository with a non-master replica. Set by vcheckout. Found on version reservation stubs and session directories. Read from the reservation stub by vwhohas to display which repository a checkout is local to.

content

The full path to the immutable version which this version was filled in from. Set by vcheckin. Found on versions. Usually this refers to a snapshot taken with vadvance, but vcheckin's -c option can be used to specify the content explicitly.

created-by

The user who created a package or branch as a global name (username@realm). Set by vcreate and vbranch. Found on packages and branches.

creation-time

A string representation of the time that a package or branch was created. The exact format of this string is controlled by the [UserInterface]TimeFormat configuration setting, which is used with stftime(3). Set by vcreate and vbranch. Found on packages and branches.

#formerly

When an object in an appendable directory is deleted through the repository's NFS iterface, it gets replaced with a ghost. When certain objects are deleted in this way, the repository records some of the information which would otherwise be lost in a #formerly attribute on the ghost. Specifically:

  • A deleted master appendable directory will have a list of the names it containes recorded in the #formerly attribute on the ghost

  • Any other non-stub object (such as an immutable directory) will have a its fingerprint (a 128-bit number which uniquely identifies the object) recorded in the #formerly attribute on the ghost

This informaiton is not directly used by any of the repository tools.
#group

The group of this object as a global name (^groupname@realm). Also defines the group of any files and subdirectories contained by the object with the #group attribute. The group is inherited downward until another #group attribute is found. Set by the repository's NFS interface (e.g. by using chgrp(1)). Can have multiple values, in which case the group permissions apply to members of all the listed groups. (One must use vattrib to give an object multiple groups.) The UNIX group presented through NFS is the first group found which has a UNIX group ID mapping. If no group with a local group ID mapping is found, the group id given by the [Repository]vforeign_gid is used instead.

#master-grant

This attribute is used by the repository during the mastership transfer protocol. There's usually no reason to examine or manipulate it.

master-repository

A list of repositories (hostname:port) to consult when looking for the master copy of an object. Set automatically by the repository when creating new objects or transaferring mastership between repositories. (This attribute is considered to be a hint and is not authoritative or even neccessarily correct.)

#master-request

This attribute is used by the repository during the mastership transfer protocol. There's usually no reason to examine or manipulate it.

#mastership-from

Lists the addresses of repositories (hostname:port) we're willing to accept a mastership transfer from. In order to determine whther a particular mastership transfer is allowed, the destination repository searches upward from the path to be transferred for the closest enclosing directory with a #mastership-from attribute. The current master repository's address must be listed in that attribute or permission for the mastership transfer will be denied.

#mastership-to

Lists the addresses of repositories (hostname:port) to which we're willing to transfer mastership. In order to determine whther a particular mastership transfer is allowed, the current master repository searches upward from the path to be transferred for the closest enclosing directory with a #mastership-to attribute. The address of the repository requesting to be given mastership must be listed in that attribute or permission for the mastership transfer will be denied.

message

A descriptive message about an object. Set by vcreate on packages, vbranch on branches, vcheckout on reservation stubs and session directories, and vcheckin on new versions.

#mode

The user, group, and world permissions for this object as UNIX-style mode bits in octal. Also defines the permissions of any files and subdirectories contained by the object with the #mode attribute. The permissions are inherited downward until another #mode attribute is found. Set by the repository's NFS interface (e.g. by using chmod(1)). The interpretation of the bits in #mode is described in greater detail on the repository man page.

new-version

describe new-version here

next-branches

describe next-branches here

next-packages

describe next-packages here

next-sessions

describe next-sessions here

next-versions

describe next-versions here

old-version

describe old-version here

#owner

The owner of this object as a global name (username@realm). Also defines the owner of any files and subdirectories contained by the object with the #owner attribute. The owner is inherited downward until another #owner attribute is found. Set by the repository's NFS interface (e.g. by using chown(1)). Can have multiple values, in which case the owner permissions apply to all the listed users. (One must use vattrib to give an object multiple owners.) The UNIX owner presented through NFS is the first owner found which has a UNIX user ID mapping. If no owner with a local user ID mapping is found, the user id given by the [Repository]vforeign_uid is used instead.

#replicate-from

Lists the addresses of repositories (hostname:port) to be trusted as replication sources. This can be placed on /vesta or subdirectories of it. In order to determine whther a particular replication is allowed, the repository searches upward from the path to be replicated for the closest enclosing directory with a #replicate-from attribute. The source repository's address must be listed in that attribute or permission for the replication will be denied.

session-dir

describe session-dir here

session-ver-arc

describe session-ver-arc here

#setgid

The group for which the UNIX "set group ID" bit should be turned on for this object as global name (^groupname@realm). If the group represented through the NFS interface (the first group in the #group attribute which has a local UNIX group id mapping) is also in the #setgid attribute, then the setgid bit will be on in the NFS interface. For security reasons, a user can only add a group which they are a member of to the #setgid attribute.

#setuid

The user for which the UNIX "set user ID" bit should be turned on for this object as global name (username@realm). If the owner represented through the NFS interface (the first user in the #owner attribute which has a local UNIX user id mapping) is also in the #setuid attribute, then the setuid bit will be on in the NFS interface. For security reasons, a user can only add their own global username to the #setuid attribute, not that of other users.

symlink-to

A stub or ghost which has a symlink-to attribute will appear as a symbolic link through the repository's NFS interface. The attribute value is the link value, unless the attribute value is the special string "$LAST" in which case the link value is the highest integer-numbered object in the same directory that is not a ghost or a stub. This attribute is most often seen on the "latest" symbolic link in packages, where it has the special value "$LAST".

type

The repository provides primitive types like appendable directories and immutable directories. The repository tools manipulate higher-level objects like packages built out of these primitive types. The type attribute is used to denote which of these higher-level constructs a particular directory in the repository represents. The values found in the type attribute are:

  • package: Found on packages. Set by vcreate and vbranch (as a branch is also a package). vcheckout will only operate on an appendable directory with package in it's type attribute.

  • branch: Found on branches. Set by vbranch. Note that a branch is also a package, so an appendable directory with branch in it's type attribute will also have package in it's type attribute.

  • session: Found on session directories. Set by vcheckout. vadvance places snapshots into directories which have session in their type attribute.

  • checkout: Found on the directory used to hold session directories named "checkout" found within packages.

work-dir

describe work-dir here