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_SYSTEM
CURRENT_PROJECT_VERSION
DYLIB_CURRENT_VERSION
CURRENT_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_PREFIX
VERSION_INFO_SUFFIX
VERSION_INFO_BUILDER
USER
environment variable.VERSION_INFO_EXPORT_DECL
VERSION_INFO_FILE
To 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 YES
The 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 YES
Set 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
pathToCVS
agvtool
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 YES
The 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 YES
Set 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
pathToSVN
what-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 |