# Interface VersionControlSystem

@Incubating public interface VersionControlSystem
Allows the user to perform generic version control operations in ways specified by the underlying implementations.

Since:
  4.4

## Method Summary

Modifier and Type
Method
Description
`Set<VersionRef>`
`getAvailableVersions(VersionControlSpec spec)`
Returns a `Set` of `VersionRef`s representing versions of a software package as they are known to the version control system.
`File`
`populate(File versionDir, VersionRef ref, VersionControlSpec spec)`
Populates a working directory under `versionDir` with the latest state of the version control repository from the `spec` and returns the working directory.

## Method Details

### getAvailableVersions

Set<VersionRef> getAvailableVersions(VersionControlSpec spec)
Returns a `Set` of `VersionRef`s representing versions of a software package as they are known to the version control system.

### populate

File populate(File versionDir, VersionRef ref, VersionControlSpec spec)
Populates a working directory under `versionDir` with the latest state of the version control repository from the `spec` and returns the working directory.