The vcsrepo module works with the following VCSs:
+* [Git (git)](#git)*
* [Bazaar (bzr)](#bazaar)
* [CVS (cvs)](#cvs)
-* [Git (git)](#git)
* [Mercurial (hg)](#mercurial)
+ * [Perforce (p4)](#perforce)
* [Subversion (svn)](#subversion)
+**Note:* Git is the only VCS provider officially [supported](https://forge.puppetlabs.com/supported) by Puppet Labs.
+
+
+###Git
+
+#####To create a blank repository
+
+To create a blank repository suitable for use as a central repository,
+define `vcsrepo` without `source` or `revision`.
+
+ vcsrepo { "/path/to/repo":
+ ensure => present,
+ provider => git,
+ }
+
+If you're defining `vcsrepo` for a central or official repository, you may want to make it a bare repository. You do this by setting `ensure` to 'bare' rather than 'present'.
+
+ vcsrepo { "/path/to/repo":
+ ensure => bare,
+ provider => git,
+ }
+
+#####To clone/pull a repository
+
+To get the current HEAD on the master branch,
+
+ vcsrepo { "/path/to/repo":
+ ensure => present,
+ provider => git,
+ source => "git://example.com/repo.git",
+ }
+
+To get a specific revision or branch (can be a commit SHA, tag, or branch name),
+
+ **SHA**
+
+ vcsrepo { "/path/to/repo":
+ ensure => present,
+ provider => git,
+ source => 'git://example.com/repo.git',
+ revision => '0c466b8a5a45f6cd7de82c08df2fb4ce1e920a31',
+ }
+
+**Tag**
+
+ vcsrepo { "/path/to/repo":
+ ensure => present,
+ provider => git,
+ source => 'git://example.com/repo.git',
+ revision => '1.1.2rc1',
+ }
+
+**Branch name**
+
+ vcsrepo { "/path/to/repo":
+ ensure => present,
+ provider => git,
+ source => 'git://example.com/repo.git',
+ revision => 'development',
+ }
+
+To check out a branch as a specific user,
+
+ vcsrepo { "/path/to/repo":
+ ensure => present,
+ provider => git,
+ source => 'git://example.com/repo.git',
+ revision => '0c466b8a5a45f6cd7de82c08df2fb4ce1e920a31',
+ user => 'someUser',
+ }
+
+To keep the repository at the latest revision (**WARNING:** this will always overwrite local changes to the repository),
+
+ vcsrepo { "/path/to/repo":
+ ensure => latest,
+ provider => git,
+ source => 'git://example.com/repo.git',
+ revision => 'master',
+ }
+
+#####Sources that use SSH
+
+When your source uses SSH, such as 'username@server:…', you can manage your SSH keys with Puppet using the [require](http://docs.puppetlabs.com/references/stable/metaparameter.html#require) metaparameter in `vcsrepo` to ensure they are present.
+
+For SSH keys associated with a user, enter the username in the `user` parameter. Doing so will use that user's keys.
+
+ user => 'toto' # will use toto's $HOME/.ssh setup
+
+#####Further Examples
+
+For more examples using Git, see `examples/git/`.
+
###Bazaar
#####Create a blank repository