Name

svk checkout — Check out a working copy from a repository.

Synopsis

svk checkout DEPOTPATH[@REV[@]] [PATH]
svk checkout URL [PATH]
svk checkout --list
svk checkout --relocate DEPOTPATH|PATH PATH
svk checkout --detach [DEPOTPATH|PATH]
svk checkout --purge

Description

Check out a working copy from a repository. If PATH is omitted, the basename of the DEPOTPATH will be used as the destination.

Using the second form, svk will setup a mirror of the specified URL if you don't have one already, sync the mirror and checkout a working copy from the mirror.

Warning

Unlike Subversion or CVS, SVK working copies do not contain any administrative files or directories. This means things like diff -r and find work great on SVK working copies. However because of this it's not possible to simply rename an svk working copy or remove it without telling svk about it. SVK keeps the metadata associated with a working copy inside your $SVKROOT (which defaults to ~/.svk). Because of this you need to use the commands listed here to manage working copies.

With the --list switch, output one line per checked out working copy. Each line consists of the depotpath followed by an absolute path to the working copy.

If you wish to change the location of a checked out working copy you need to use the svk checkout with the --relocate. Give it both the old and the new path to the working copy. Either before or after that you should move the working copy to it's new location so SVK can find it.

Once you are done using a working copy you should tell svk this since it keeps track of all checked out working copies. To do so you would run svk checkout with the --detach switch. This lets SVK know it no longer needs to keep track of this particular working copy. This command does not actually remove the working copy from disk. That's still your job.

Tip

If you want to create a working copy that svk doesn't track at all you can use the --export switch to the svk checkout command.

If you accidentally remove a working copy or working copies that svk was tracking for you, running svk checkout with the --purge switch will prompt svk to forget about each working copy it can no longer find on disk.

Alternate Names

co

Changes

Creates a working copy.

Accesses Depot

Yes

Accesses Mirrored Repository

No

Switches

--revision (-r) REV[@]
--non-recursive (-N)
--list (-l)
--detach (-d) [DEPOTPATH|PATH]
--quiet (-q)
--export
--relocate DEPOTPATH|PATH PATH
--purge

Examples

Check out a working copy into a directory called mine:

$ svk checkout //test mine
Syncing //test(/test) in /Users/sally/mine to 2.
A  mine/a
A  mine/b
$ ls
mine

List which working copies you have checked out:

$ svk checkout --list
  Depot Path                            Path
========================================================================
  //test                                /Users/sally/mine

Change the location of the checked out working copy:

$ mkdir test
$ svk checkout --relocate mine test/mine
Checkout '/Users/sally/mine' relocated to '/Users/sally/test/mine'.
$ svk checkout --list
  Depot Path                            Path
========================================================================
  //test                                /Users/sally/test/mine

Get rid of the working copy since we don't need it anymore:

$ svk checkout --detach test/mine
Checkout path '/Users/sally/test/mine' detached.
$ svk checkout --list
  Depot Path                            Path
========================================================================
$ rm -rf test/mine

Using the --purge switch after you have removed a working copy:

$ svk checkout --quiet //test mine
Syncing //test(/test) in /Users/sally/mine to 2.
$ rm -rf mine
$ svk checkout --purge
Purge checkout of //test to non-existing directory /Users/sally/mine? (y/n) y
Checkout path '/Users/sally/mine' detached.