- 
    Bug 
- 
    Resolution: Fixed
- 
    Major 
- 
    None
- 
    Platform: All, OS: Windows XP
We've found an issue using Hudson + Git plugin on Windows: when the plugin tries 
to execute a clone in a repository (local or remote), the following error 
occurs:
started
Checkout (clone)
Cloning repository C:/sistemas_ruby/teste
$ git clone C:/sistemas_ruby/teste "/C:/Documents and Settings/Antonio.HOME-
2983D23F4B/.hudson/jobs/Teste/workspace"
fatal: could not create leading directories of '/C:/Documents and 
Settings/Antonio.HOME-2983D23F4B/.hudson/jobs/Teste/workspace': Invalid argument
FATAL: Clone returned an error code
hudson.plugins.git.GitException: Clone returned an error code
	at hudson.plugins.git.GitAPI.clone(GitAPI.java:142)
	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:264)
	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:235)
	at hudson.FilePath.act(FilePath.java:389)
	at hudson.plugins.git.GitSCM.checkout(GitSCM.java:235)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:666)
	at 
hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:264)
	at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:238)
	at hudson.model.Run.run(Run.java:823)
	at hudson.matrix.MatrixBuild.run(MatrixBuild.java:100)
	at hudson.model.ResourceController.execute(ResourceController.java:70)
	at hudson.model.Executor.run(Executor.java:90)
The problem is the first slash on the path of the workspace ("/C:/Documents…").  
I guess that on Linux this shouldn't be a problem, but on windows this slash 
causes an error.
I downloaded the sources from Maven browser (http://www.mvnbrowser.com/artifact-
details.html?groupId=org.jvnet.hudson.plugins&artifactId=git&version=0.5 ) and  
found that the problem occurs in the class GitAPI.java, in the following line of 
the clone method:
args.add(source, workspace.toURI().getPath());
It seems that the method toURI() of the FilePath class always returns a string 
beginning with a slash. So, I've changed this line to the following:
if(workspace.isRemote())
	args.add(source, workspace.toURI().getPath());
else{
	final ArgumentListBuilder argsTmp = args;
	final String sourceTmp = source;
	args = workspace.act(new FileCallable<ArgumentListBuilder>() {
		public ArgumentListBuilder invoke(File workspace, VirtualChannel 
channel)
				throws IOException 
	});
}			
And it works pretty well for me, at least in a windows environment.
I would like to ask you to please verify if this modification is correct and, if 
possible, to include it in a next version of the plugin.