hv Command Reference

This section provides a complete reference of all commands available in the HV Command Line Interface (CLI). The HV CLI is a complementary tool for Teams available out of the box in the IDA installation directory.

Prerequisites

  • Configured HV credentials

Sites

Commands in this section manipulate sites.

A user must be using a site in order for most commands to work correctly.

site add

site add [-u USER] SITENAME ROOTDIR [HOST]

Creates a new site.

The specified user will be the owner of the new site. If the user is not specified, the current user will own the site. Only the site owner can use a site.

Only admins can create sites for other users.

To use a site, it must be specified as described in the credentials section.

-u USER

The user (owner) of the new site, must be an existing username. Defaults to the current user. Admins can specify a different user.

SITENAME

The name of the site that will be created, it must be unique (no site can already exist with that name). It must not exceed 64 characters, and it must be composed of alphanumerics or underscore or dash. The first character cannot be a digit or a dash.

ROOTDIR

The absolute path to the directory that will hold the vault files.

HOST

The computer from which the site can be used. It can be specified as an empty string. In this case the server will let the site to be used by any computer. However, since it is a safety feature that prevents from inadvertently using a site from a wrong computer, we do not recommend to specify it as an empty string. When creating a site for the current user, the host defaults to the current computer.

Examples:


site del

site del [-f] SITENAME

Deletes a site.

If -f was passed and the site has some pending worklists, they will be deleted.

This is not a reversible operation, so we recommend caution.

Only admins can delete sites that belong to other users.

-f

Force the deletion even if the site still has worklists.

SITENAME

Name of the site to delete.

Example:


site edit

site edit [-u USER] SITENAME ROOTDIR [HOST]

Edits an existing site's details, such as the rootdir and the host it is bound to.

Admins can reassign a site to a new user or edit sites of other users.

-u USER

The new user (owner) of the site, can only be different than the previous owner if the current user is admin.

SITENAME

The name of the site that will be edited. It must exist and be owned by the current user, unless if the current user is admin.

ROOTDIR

The new absolute path to the directory that will hold the site files.

HOST

The new hostname that will be used for the site. It can be omitted if no changes are desired.

Examples:


sites

sites [SITENAME]

Lists all sites.

Show a list of sites, and their associated information.

SITENAME

Name of the site to show.

Example:


Site filters

filt get

filt get [-s SITENAME]

Displays the filter table associated with the site.

Only admins can see filter tables of other users.

-s SITENAME

The sitename whose filter table should be displayed. If omitted, defaults to the current site.

Examples:


filt set

filt set [-s SITENAME] [@file]

Sets the filter table associated to the site, either interactively or from @file.

Information about the format of site filters can be retrieved by issuing the filt get command.

Only admins can modify filter tables of other users.

-s SITENAME

The sitename whose filter table should be set. If omitted, defaults to current site.

@file

File containing the new table.

Examples:


File manipulation

add

add [-s] [-w WORKLIST_ID] PATH_PATTERN...

Adds new file(s) to a worklist.

Issuing this command will not upload the file(s) to the server right away: the new file name(s) will be placed into a worklist, which then needs to be committed to the server. Once a worklist is committed, its files will be available to other users.

The specified file(s) are not required to exist, it is possible to add a file that does not exist yet.

The files must be inside the site's rootdir.

The files will be filtered using hvignore rules.

-s

Silent mode; do not output any messages.

-w WORKLIST_ID

The id of the worklist that the file(s) will be added to. If omitted, defaults to worklist 1.

Local path to file(s) to add to the vault.

Examples:


copy

copy [-s] [-w WORKLIST_ID] SRC_PATHarrow-up-right DST_PATH

Makes a copy of vault file(s).

This command creates a copy of the original file at the requested destination, and place the new file into a worklist. Once the worklist is committed, the new file will be visible to other users.

NOTE: The source file will be downloaded from the server to the new file. If the source file was modified locally, those modifications won't be part of the copy. This implies that if a file has just been added to the {hrvsrv} but not committed yet, it can't be copied because it does not exist on the server yet.

-s

Silent mode; do not output any messages.

-w WORKLIST_ID

The id of the worklist that the files will be added to. If omitted, defaults to worklist 1.

The source path.

The destination path.

Examples:


move

move [-s] [-w WORKLIST_ID] SRC_PATH DST_PATH

Opens tracked file(s) for moving/renaming.

This is similar to performing a copy, followed by a del: the new file will be checked out for copy while the original file will be checked out for deletion.

-s

Silent mode; do not output any messages.

-w WORKLIST_ID

The id of the worklist that the file(s) will be added to. If omitted, defaults to the worklist 1.

The source path.

The destination path.

Example:


del

del [-s] [-w WORKLIST_ID] PATH_PATTERN...

Opens tracked file(s) for deletion, adding them to a worklist.

Once the worklist is committed, the file(s) won't be tracked anymore by the {hrvsrv}, and will be removed from the local filesystem.

NOTE: That this does not remove all revisions of the file on the server: that is the role of the purge command.

-s

Silent mode; do not output any messages.

-w WORKLIST_ID

The id of the worklist that the file(s) will be added to. If omitted, defaults to worklist 1.

Vault path of file(s) to delete.

Example:


edit

edit [-s] [-w WORKLIST_ID] PATH_PATTERN...

Opens tracked file(s) for edit, adding them to a worklist.

This command is used to instruct the {hrvsrv} that we will be working on files, so that it knows what revision of the file(s) that work will be based on and so later diff or resolve commands can work correctly.

-s

Silent mode; do not output any messages.

-w WORKLIST_ID

The id of the worklist that the file(s) will be added to. If omitted, defaults to worklist 1.

Vault path of file(s) to checkout for edit.

Example:


scan

scan [-a] [-e] [-d] [-s] [PATH_PATTERN...]

Reconciles the contents of the current directory (or the one(s) provided) on the local filesystem, with those of the corresponding path(s) on the server.

This command will recursively look for:

  • new files (if -a is provided)

  • deleted files (if -d is provided)

  • modified files (if -e is provided)

If any is found will create a new worklist and, add those for addition/deletion/modification.

This command is particularly useful if the user didn't have access to the server at a time it was necessary (e.g., to issue an edit command, while flying across the Atlantic.) Users can still get work done in such cases, and once they gain access to the server again, issue a scan to commit the changes.

NOTE: The -e option causes the scan command to compute checksums of the local files, in order to compare them against those known to the server, in order to spot modifications.

NOTE: If no options were given, defaults to -e -d.

The files found by the scan command will be filtered by hvignore.

-a

Checkout for add files that are present only on the client side.

-e

Checkout for edit files that are present on both the vault and the client side but differ.

-d

Checkout for delete files that are present only on the server side.

-s

Silent mode; do not output any messages.

Local path of file(s) to scan, if omitted defaults to current directory.

Example:


Working with worklists

worklists

worklists [WORKLIST_ID] [USER]

Lists information about worklists.

Show a (possibly filtered) list of pending worklists, and their metadata:

  • the timestamp of when they were last changed

  • the number of files they contain

  • the owner

  • the site

  • their description

See also worklist show

WORKLIST_ID

Restrict to the provided worklist, defaults to showing all worklists.

USER

Restrict to user USER, defaults to the current user.

Example:


Manipulating a worklist

The following worklist commands will also work with the shorter wk alias.

worklist add

worklist add DESCRIPTION

Creates a new worklist, with the provided description.

The worklist will initially be empty, and assigned a free ID.

Files can be associated to that new worklist when they are marked for addition, deletion, or edition.

DESCRIPTION

The description of the new worklist.

Example:


worklist show

worklist show [-s SITE] [-u USER] [WORKLIST_ID]

Lists worklist contents.

Show a list of files opened for editing, addition or deletion, and their associated worklist(s).

-s SITE

Restrict to site SITE. If omitted, defaults to the current site.

-u USER

Restrict to user USER. If omitted, defaults to the current user.

WORKLIST_ID

Restrict to the provided worklist, defaults to showing all worklists.

Examples:


worklist edit

worklist edit WORKLIST_ID DESCRIPTION

Edits a worklist description.

WORKLIST_ID

The worklist to modify.

DESCRIPTION

The new description for the worklist.

Example:


worklist del

worklist del WORKLIST_ID

Deletes a worklist.

This command will only succeed if the worklist is currently empty.

WORKLIST_ID

The worklist to delete.

Example:


Committing a worklist to the server

commit

commit [-f] [-s] WORKLIST_ID [DESCRIPTION]

Commits files to the vault (push).

This command uploads files from the local computer to the vault.

After a successful commit, the modifications made to the files contained in the worklist will be made available for other users.

A commit may fail if another user uploaded another revision of the changed files meanwhile. In this case resolve is necessary to merge the changes.

If the worklist does not yet have a proper description, the DESCRIPTION is mandatory.

-f

Force commit of unchanged files.

-s

Silent mode; do not output any messages.

WORKLIST_ID

The id of the worklist to commit to the vault.

DESCRIPTION

A description for the commit.

Example:


Syncing files, resolving & reverting

sync

sync [-f] [-p] [-s] [@COMMIT_ID] [PATH_PATTERN[=REVISION]...]

Downloads the requested revisions of the files from the server, and stores them on the local filesystem.

NOTE: If no paths are provided, all files from the server will be retrieved.

Requires that a site to be currently selected.

-f

Force sync. This will force a download of the files, even when the server thinks the client has the desired revision. This is a dangerous operation: any modification made to local files will be lost.

-p

The server will perform sync without really transferring files. This options is useful if the local files are already in sync but the server has stale info about them.

-s

Silent mode; do not output any messages.

@COMMIT_ID

Sync to state right after COMMIT_ID was committed, cannot be used with =REVISION.

Vault path of file(s) to sync, if path is omitted, defaults to current directory, if no revision is specified, defaults to last revision available on vault (#^).

Examples:


resolve

resolve METHOD PATH_PATTERN

Resolves conflicts in a file, using the specified strategy.

After the strategy is successfully applied and the local file has incorporated both the "local" and "remote" changes, it will be ready to be committed.

METHOD

One of "auto", "lmerge", "rmerge", "manual", "local" or "remote".

Vault path of file(s) to resolve.

Example:


revert

revert [-a] [-p] [-s] PATH_PATTERN...

Reverts opened files to their current revisions.

-a

Revert only unchanged files.

-p

The server will revert the files without transferring files.

-s

Silent mode; do not output any messages. This options is useful if the local files are already in sync but the server has stale info about them.

Vault path of file(s) to revert.

Example:


migrate

migrate [-s] PATH_PATTERN... WORKLIST_ID

Moves opened files between worklists.

-s

Silent Mode; do not output any messages.

Vault path of file(s) to move.

WORKLIST_ID

The id of the worklist to move the files to, the worklist must already exist.

Example:


Various information

files

files [-d] [-s] [PATH_PATTERN_OR_SUBSTRING[=REVISION]...]

Displays the list of the files present in the vault.

The command will collect files from the vault (that match the selection) and display for each file:

  • the file path

  • the revision

  • the file size if it hasn't been deleted

  • the last commit id

  • the last action

-d

Include deleted files.

-s

Search for substring instead of using a path.

Vault path of file(s) to include in search or substring to search for if -s. If revision is not specified, defaults to current revision (#=). If no path is specified, defaults to the root directory of the vault.

Examples:


dir

dir [-d] [-s] [-u] PATH_PATTERN_OR_SUBSTRING...

Displays vault directory listing (current revisions).

For each file entry the command will display:

  • the timestamp of when the file was committed

  • the file size

  • the commit id

  • the type of action that was executed on the file in the commit

  • the path

  • the current revision on disk

  • an extra label if the file is unsynced

Directories will be displayed as: <subdir> PATH

-d

Include deleted files.

-s

Path patterns are simple substrings.

-u

Include unsynced files.

Vault path of file(s) to include in search or substring to search for if -s.

Examples:


show

show PATH_PATTERN[=REVISION]

Writes the contents of a file on the vault to the command line.

Vault path to file(s) to display. If no revision is specified, defaults to current revision (#=). If the file revision denotes a deleted revision of the file, the contents will not be displayed.

Example:


diff

diff PATH[=REVISION] PATH_OR_REV[=REVISION]

Compares two databases, will launch IDA in diff mode.

Only IDA databases (.i64, .idb) can be diffed with this command. If revisions of databases requested for comparison are currently not in the site, they will be downloaded to a temporary directory and will be deleted when IDA exits. On unix the temporary directory can be specified with $TMPDIR.

Database 1.

Database 2. If no path is specified, it will default to the path of Database 1. If no revision is specified, it will default to the current revision (#=).

Examples:


md5

md5 PATH_PATTERN[=REVISION]

Prints the md5 checksum of a file on the vault.

Vault path of file(s) to process, if no revision is specified, defaults to the current revision (#=).

Example:


info

info

Displays info about the vault and current session.

Example:


changes

changes [-s SITENAME] [-u USERNAME] [-c MIN_COMMIT] [-C MAX_COMMIT] [-m MAX_REPORTED_ENTRIES] [-d MIN_DATE] [-D MAX_DATE] [-l] [PATH_PATTERN...]

Displays list of commits that affect a path.

List can be refined using options.

For each commit the following info will be displayed:

  • the commit id

  • the timestamp of the commit

  • if only one file was changed, the action that was done to it (e.g. edit)

  • the user who sent the commit

  • the site from which the commit was sent

  • a description of the commit, truncated to 40 chars unless if -l is enabled

[horizontal] TIP:: This command is also available under the alias commits.

-s SITENAME

Restrict to commits from SITENAME.

-u USERNAME

Restrict to commits from USERNAME.

-c MIN_COMMIT

Restrict to commits after commit: MIN_COMMIT.

-C MAX_COMMIT

Restrict to commits prior to commit: MAX_COMMIT.

-m MAX_REPORTED_ENTRIES

Limit number of reported commits to: MAX_REPORTED_ENTRIES.

-d MIN_DATE

Restrict to commits after MIN_DATE using format YYYY-MM-DD.

-D MAX_DATE

Restrict to commits prior to MAX_DATE using format YYYY-MM-DD.

-l

Display long (>40 characters) commit descriptions.

Filter commits by vault paths. If omitted, defaults to all files.

Examples:


users

users

Shows users.

Example:


groups

groups

Displays all the existing groups and their users.

Example:


group show

group show GROUP_NAME

Displays the list of users in a group.

GROUP_NAME

A group name.

Example:


user show

user show USERNAME

Displays the full details of a specific user.

The following details will be displayed:

  • the timestamp of when the user was last active

  • the username, with a * next to it if the user has admin privileges

  • the license id of the user

  • the full name of the user

  • the email address of the user

  • notes about the user

USERNAME

The username of the user to display.

Example:


commit show

commit show COMMIT_ID

Displays the contents of a commit.

This will list all of the files that were changed by the commit.

For each file the following details will be displayed:

  • the action that was performed on it in the commit

  • the path

  • the revision

  • if it's unsynced, an extra label will be displayed

  • the size of the file

COMMIT_ID

The id of the commit to display.

Example:


Misc.

passwd

passwd PASS [USER]

Sets a new password for a user.

PASS

The new password.

USER

The username whose password should be changed. Only admins can change other users' passwords. If omitted, defaults to the current user.

Examples:


commit edit

commit edit COMMIT_ID DESCRIPTION

Edits a commit description.

Regular users may modify only their own commits. Admins may modify any commit.

COMMIT_ID

The id of the commit to amend.

DESCRIPTION

New description of the commit.

Example:


licenses

licenses

Shows active licenses

Example:


borrow

borrow PRODUCT END_DATE

Borrow a license

A borrowed license can be used offline but other users will not have access to it.

A borrowed license can be returned to the vault using return. If not returned earlier, it will automatically be returned to the vault at the expiration time.

PRODUCT

The product code or license id.

END_DATE

YYYY-MM-DD - exact date, +Nd - N days since now, +Nw - N weeks since now. DD-MON-YYYY can be used to specify an exact date too.

Example:


return

return PRODUCT

Return a borrowed license

A returned license becomes available to other vault users.

PRODUCT

The product code or license id.

Example:


gc

gc [-r] [-s] MAX_SIZE PATH_PATTERN...

Deletes old files from the vault cache on the client.

This command examines the contents of the .vault subdirectory in the specified directories and deletes old files from them, so that the total size of files does not exceed MAX_SIZE. MAX_SIZE can be specified as a plain number of bytes or using the k,M,G suffixes to denote KBs, MBs, GBs. The default value is 1GB.

If -r is specified, all subdirectories of the current directory will be processed.

-r

Recursive

-s

Silent mode; do not output any messages.

MAX_SIZE

max size of the cache.

Local directories to process

Example:


Administrative commands

These commands require that the user executing them has admin privileges.

Managing users

user add

user add USERNAME REALNAME EMAIL IS_ADMIN NOTES

Adds a user.

USERNAME

The username of the user.

REALNAME

The full name of the user.

EMAIL

The email address of the user.

IS_ADMIN

Should be 1 if the user is admin, otherwise 0.

NOTES

Extra notes about the user.

Example:


user edit

user edit USERNAME REALNAME EMAIL IS_ADMIN NOTES

Edits a user definition.

USERNAME

The username of the user to modify.

REALNAME

The full name of the user.

EMAIL

The email address of the user.

IS_ADMIN

Should be 1 if the user is admin, otherwise 0.

NOTES

Extra notes about the user.

Example:


user del

user del [-b] [-f] USERNAME

Deletes a user.

Cuation: deleting a user with borrowed licenses will make the borrowed licenses unavailable until their expiration date.

-b

Force deletion even if the user has borrowed licenses.

-f

Force deletion even if the user has checked out files.

USERNAME

The name of the user to delete from the vault.

Example:


Managing groups

group add

group add GROUP_NAME

Adds a new group.

An empty group with the specified name is created.

GROUP_NAME

the name of the new group.

Example:


group edit

group edit GROUP_NAME USER ADD_OR_DELETE

Edits a group by adding or deleting users.

GROUP_NAME

the name of the group.

USER

the name of the user.

ADD_OR_DELETE

add or delete the specified user from the group, 0 is delete, 1 is add.

Example:


group del

group del GROUP_NAME

Deletes a group.

GROUP_NAME

the name of the group to delete.

Example:


Managing permissions

perm get

perm get

Displays permission tablearrow-up-right.

The current permission table is printed to the standard output.

Example:


perm set

perm set [@FILE]

Sets new permissions tablearrow-up-right from STDIN or from file.

The installed permission table becomes active immediately.

We recommend using perm check to ensure that the new permission table works correctly.

@FILE

The file from which to set the new permissions table.

Example:


perm check

perm check USERNAME PATH_PATTERN

Checks permissions for a user.

The list of files that are visible to the user is printed, along with the permissions that the user has. The read access is denoted by 'r' and the write access is denoted by 'w'.

USERNAME

The USERNAME of the user whose permissions that will be tested.

Vault path of file(s) that will be tested.

Example:


Others

sessions

sessions

Displays the sessions info.

For each session on the vault, the following info will be displayed:

  • the site

  • the user

  • the hostname

  • the timestamp of the login time

  • the timestamp of the last activity

  • "ADM" if the user has admin privileges

  • "*" for the session executing the command

Example:


purge

purge [-s] [-y] PATH_PATTERN...

Purges file(s) from the Vault server, permanently deleting it and all of its history.

The path patterns must be specified using full paths, starting with //

-s

Silent mode; do not output any messages.

-y

Really purge the files, without this parameter the command does a dry-run.

Vault path of file(s) to purge from the vault.

Example:


Last updated

Was this helpful?