- 'init' => "git clone --depth 1 '%s' '%s'",
- 'update' => "git pull",
- 'controldir' => ".git"},
+ 'init' => "git clone --depth 1 '%s' '%s'",
+ 'init_branch' => "git clone --depth 1 --branch '%s' '%s' '%s'",
+ 'init_commit' => "git clone '%s' '%s' && cd '%s' && git checkout -b '%s' '%s' && cd -",
+ 'update' => "git pull --ff",
+ 'update_force' => "git pull --ff || (git reset --hard HEAD; git pull --ff; exit 1)",
+ 'controldir' => ".git",
+ 'revision' => "git rev-parse --short HEAD | tr -d '\n'"},
+ 'src-git-full' => {
+ 'init' => "git clone '%s' '%s'",
+ 'init_branch' => "git clone --branch '%s' '%s' '%s'",
+ 'init_commit' => "git clone '%s' '%s' && cd '%s' && git checkout -b '%s' '%s' && cd -",
+ 'update' => "git pull --ff",
+ 'update_force' => "git pull --ff || (git reset --hard HEAD; git pull --ff; exit 1)",
+ 'controldir' => ".git",
+ 'revision' => "git rev-parse --short HEAD | tr -d '\n'"},
+ 'src-gitsvn' => {
+ 'init' => "git svn clone -r HEAD '%s' '%s'",
+ 'update' => "git svn rebase",
+ 'controldir' => ".git",
+ 'revision' => "git rev-parse --short HEAD | tr -d '\n'"},