Commandline clClone = createCloneCommand( repository, fileSet.getBasedir(), version );
exitCode = GitCommandLineUtils.execute( clClone, stdout, stderr, getLogger() );
if ( exitCode != 0 )
{
return new CheckOutScmResult( clClone.toString(), "The git-clone command failed.", stderr.getOutput(),
false );
}
lastCommandLine = clClone.toString();
}
GitRemoteInfoCommand gitRemoteInfoCommand = new GitRemoteInfoCommand();
gitRemoteInfoCommand.setLogger( getLogger() );
RemoteInfoScmResult result = gitRemoteInfoCommand.executeRemoteInfoCommand( repository, null, null );
if ( fileSet.getBasedir().exists() && new File( fileSet.getBasedir(), ".git" ).exists()
&& result.getBranches().size() > 0 )
{
// git repo exists, so we must git-pull the changes
Commandline clPull = createPullCommand( repository, fileSet.getBasedir(), version );
exitCode = GitCommandLineUtils.execute( clPull, stdout, stderr, getLogger() );
if ( exitCode != 0 )
{
return new CheckOutScmResult( clPull.toString(), "The git-pull command failed.", stderr.getOutput(),
false );
}
lastCommandLine = clPull.toString();
// and now lets do the git-checkout itself
Commandline clCheckout = createCommandLine( repository, fileSet.getBasedir(), version );
exitCode = GitCommandLineUtils.execute( clCheckout, stdout, stderr, getLogger() );
if ( exitCode != 0 )
{
return new CheckOutScmResult( clCheckout.toString(), "The git-checkout command failed.",
stderr.getOutput(), false );
}
lastCommandLine = clCheckout.toString();
}
// and now search for the files
GitListConsumer listConsumer =
new GitListConsumer( getLogger(), fileSet.getBasedir(), ScmFileStatus.CHECKED_IN );
Commandline clList = GitListCommand.createCommandLine( repository, fileSet.getBasedir() );
exitCode = GitCommandLineUtils.execute( clList, listConsumer, stderr, getLogger() );
if ( exitCode != 0 )
{
return new CheckOutScmResult( clList.toString(), "The git-ls-files command failed.", stderr.getOutput(),
false );
}
return new CheckOutScmResult( lastCommandLine, listConsumer.getListedFiles() );
}