| AGVTOOL(1) | General Commands Manual | AGVTOOL(1) |
agvtool —
Apple-generic versioning tool for Xcode projects
agvtool |
what-version | vers
[-terse] |
agvtool |
[-noscm | -usecvs |
-usesvn] next-version |
bump [-all] |
agvtool |
[-noscm | -usecvs |
-usesvn] new-version
[-all] versionNumber |
agvtool |
[-noscm | -usecvs |
-usesvn] tag
[-force | -F]
[-noupdatecheck | -Q]
[-baseurlfortag] |
agvtool |
[-noscm | -usecvs |
-usesvn] submit
[-bytag | -notbytag]
[-baseurlfortag] release
... |
agvtool |
what-marketing-version |
mvers [-terse |
-terse1] |
agvtool |
[-noscm | -usecvs |
-usesvn]
new-marketing-version |
vers version |
agvtool helps speed up common operations
for Xcode projects that use the Apple Generic Versioning system.
You enable versioning support by setting up some build settings in your project.
The settings used by the apple-generic versioning system are as follows:
VERSIONING_SYSTEMCURRENT_PROJECT_VERSIONDYLIB_CURRENT_VERSIONCURRENT_PROJECT_VERSION the value
must be an integer or floating point number like 57 or 365.8. By default
it is set to “$(CURRENT_PROJECT_VERSION)”.VERSION_INFO_PREFIXVERSION_INFO_SUFFIXVERSION_INFO_BUILDERUSER environment variable.VERSION_INFO_EXPORT_DECLVERSION_INFO_FILETo enable Apple Generic Versioning, then, you must set up at least
the VERSIONING_SYSTEM and
CURRENT_PROJECT_VERSION project build settings for
each project you want to be versioned. The target of a versioned project
will have two global variables generated and linked into your product. One
is of type double and is simply the
CURRENT_PROJECT_VERSION. The other is a version
string which is formatted to be compatible with what(1).
These variables are available for use in your code.
Projects with multiple targets are required to have the same
CURRENT_PROJECT_VERSION for each target. The easiest
way to achieve this is to set
CURRENT_PROJECT_VERSION at the project level.
agvtool should be invoked with the working
directory set to your project directory (the folder containing your
.xcodeproj project file).
agvtool pays attention to the following
defaults for CVS usage: CVSEnabled,
CVSSubmitByTag, and
CVSToolPath.
If CVSEnabled is set to
YES then agvtool will
perform certain CVS operations like committing modified project files and
performing tagging operations. You can set this default by issuing the
following command:
defaults write agvtool
CVSEnabled YESThe sense of this default can be overidden by supplying an
explicit -noscm (which turns off CVS and Subversion
usage), -usecvs (which turns on CVS usage and turns
off Subversion usage), or -usesvn (which turns off
CVS usage and turns on Subversion usage).
If CVSSubmitByTag is set to
YES then agvtool will submit
your project by CVS tag using the same version as the tag operation. The
sense of this default can be overridden by supplying an explicit
-bytag or -notbytag argument
to the submit operation. You can set this default by issuing the following
command:
defaults write agvtool
CVSSubmitByTag YESSet CVSToolPath to point to the location
of the cvs tool to use. If this default is not set then
agvtool will use
/usr/bin/ocvs if it exists. Otherwise
/usr/bin/cvs will be used. You can set this default
by issuing the following command:
defaults write agvtool
CVSToolPath
pathToCVSagvtool pays attention to the following
defaults for Subversion usage: SVNEnabled,
SVNSubmitByTag, and
SVNToolPath.
If SVNEnabled is set to
YES then agvtool will
perform certain Subversion operations like committing modified project files
and performing tagging operations. You can set this default by issuing the
following command:
defaults write agvtool
SVNEnabled YESThe sense of this default can be overidden by supplying an
explicit -noscm (which turns off CVS and Subversion
usage), -usecvs (which turns on CVS usage and turns
off Subversion usage), or -usesvn (which turns off
CVS usage and turns on Subversion usage).
If SVNSubmitByTag is set to
YES then agvtool () will
submit your project by Subversion URL using the same version as that created
by the tag operation. The sense of this default can be overridden by
supplying an explicit -bytag or
-notbytag argument to the submit operation. You can
set this default by issuing the following command:
defaults write agvtool
SVNSubmitByTag YESSet SVNToolPath to point to the location
of the svn tool to use. If this default is not set then
agvtool will use
/usr/local/bin/svn if it exists. You can set this
default by issuing the following command:
defaults write agvtool
SVNToolPath
pathToSVNwhat-version
|
vers
[-terse]The -terse option can be used to limit
the output to the version number only.
next-version
|
bump
[-all]The CURRENT_PROJECT_VERSION and the
DYLIB_CURRENT_VERSION will be updated. The
-all option will also update the
CFBundleVersion Info.plist key.
If CVS support is enabled, the modified project file will be committed.
new-version
[-all version]The CURRENT_PROJECT_VERSION and the
DYLIB_CURRENT_VERSION will be updated. The
-all option will also update the
CFBundleVersion Info.plist key.
If CVS support is enabled, the modified project file will be committed.
tag
[-force | -F]
[-noupdatecheck | -Q]
[-baseurlfortag]CURRENT_PROJECT_VERSION with any
‘.’ transformed into ‘~’ (since CVS does not
allow dots in tag names).
The -force or
-F option will add a -F
to the tag operation.
The -noupdatecheck or
-Q option skips the cvs update usually done
prior to tagging to ensure that there are no uncommitted changes.
The -baseurlfortag option can be used
to provide a URL that points to the directory to place the
"tag" in when using Subversion. This overrides the
SVNBaseTagURL default. This option is ignored if
Subversion is not being used.
Note: This command will only function if CVS or Subversion support is enabled.
submit
[-bytag | -notbytag]
[-baseurlfortag] release
...The -bytag option performs the
submission by tag instead of submitting from the project source
directly. The -notbytag option submits from the
project source.
If CVSSubmitByTag is set,
-bytag is the default. Otherwise,
-notbytag is the default.
The -baseurlfortag option can be used
to provide a URL that points to the directory to find "tags"
in when using Subversion. This overrides the
SVNBaseTagURL default. This option is ignored if
Subversion is not being used.
Note: This command is relevant only for Apple employees.
what-marketing-version
|
mvers
[-terse | -terse1]The marketing version is the
CFBundleShortVersionString Info.plist key. This
is often a totally different version determined by product marketing
folks.
The -terse option will limit the
output to the version number only when displaying version numbers for
Jambase targets.
The -terse1 option will limit the
output to the first version number found, and only display the version
number.
new-marketing-version
versionThe marketing version is the
CFBundleShortVersionString Info.plist key. This
is often a totally different version determined by product marketing
folks.
If CVS support is enabled, the modified project file will be committed.
Do not use this command on a project with targets that track different marketing versions.
| April 11, 2012 | OS X |