fix mailing test cases

Project: http://git-wip-us.apache.org/repos/asf/maven-scm/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-scm/commit/184ef0e4
Tree: http://git-wip-us.apache.org/repos/asf/maven-scm/tree/184ef0e4
Diff: http://git-wip-us.apache.org/repos/asf/maven-scm/diff/184ef0e4

Branch: refs/heads/master
Commit: 184ef0e4209a185bf35a95ad95ad58ded778ef87
Parents: b85c9bb
Author: imod <d...@fortysix.ch>
Authored: Sat Jul 6 22:09:08 2013 +0200
Committer: imod <d...@fortysix.ch>
Committed: Sat Jul 6 22:09:08 2013 +0200

----------------------------------------------------------------------
 .../provider/git/jgit/command/JGitUtils.java    | 25 +++++++-----
 .../command/checkout/JGitCheckOutCommand.java   | 43 +++++++++++++++-----
 .../git/jgit/command/tag/JGitTagCommand.java    | 18 +++++++-
 3 files changed, 63 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-scm/blob/184ef0e4/src/main/java/org/apache/maven/scm/provider/git/jgit/command/JGitUtils.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/maven/scm/provider/git/jgit/command/JGitUtils.java 
b/src/main/java/org/apache/maven/scm/provider/git/jgit/command/JGitUtils.java
index 541baf2..67166e1 100644
--- 
a/src/main/java/org/apache/maven/scm/provider/git/jgit/command/JGitUtils.java
+++ 
b/src/main/java/org/apache/maven/scm/provider/git/jgit/command/JGitUtils.java
@@ -24,7 +24,10 @@ import org.eclipse.jgit.api.errors.GitAPIException;
 import org.eclipse.jgit.api.errors.InvalidRemoteException;
 import org.eclipse.jgit.api.errors.NoFilepatternException;
 import org.eclipse.jgit.api.errors.TransportException;
+import org.eclipse.jgit.diff.DiffEntry;
 import org.eclipse.jgit.diff.DiffEntry.ChangeType;
+import org.eclipse.jgit.diff.DiffFormatter;
+import org.eclipse.jgit.diff.RawTextComparator;
 import org.eclipse.jgit.errors.CorruptObjectException;
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
@@ -44,7 +47,7 @@ import org.eclipse.jgit.transport.PushResult;
 import org.eclipse.jgit.transport.RefSpec;
 import org.eclipse.jgit.transport.RemoteRefUpdate;
 import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
-import org.eclipse.jgit.treewalk.TreeWalk;
+import org.eclipse.jgit.util.io.DisabledOutputStream;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -188,15 +191,18 @@ public class JGitUtils
         List<ScmFile> list = new ArrayList<ScmFile>();
         if ( JGitUtils.hasCommits( repository ) )
         {
-            TreeWalk tw = new TreeWalk( repository );
-            tw.reset();
-            tw.setRecursive( true );
-            tw.addTree( commit.getTree() );
-            while ( tw.next() )
-            {
-                list.add( new ScmFile( tw.getPathString(), 
ScmFileStatus.CHECKED_IN ) );
+               RevWalk rw = new RevWalk(repository);
+            RevCommit realParant = commit.getParentCount() > 0 ? 
commit.getParent(0) : commit;
+                       RevCommit parent = rw.parseCommit(realParant.getId());
+            DiffFormatter df = new 
DiffFormatter(DisabledOutputStream.INSTANCE);
+            df.setRepository(repository);
+            df.setDiffComparator(RawTextComparator.DEFAULT);
+            df.setDetectRenames(true);
+            List<DiffEntry> diffs = df.scan(parent.getTree(), 
commit.getTree());
+            for (DiffEntry diff : diffs) {
+                list.add( new ScmFile( diff.getNewPath(), 
ScmFileStatus.CHECKED_IN )); 
             }
-            tw.release();
+            rw.release();
         }
         return list;
     }
@@ -209,7 +215,6 @@ public class JGitUtils
      * @throws ScmException if the given Status cannot be translated
      */
     public static ScmFileStatus getScmFileStatus( ChangeType changeType )
-        throws ScmException
     {
         switch ( changeType )
         {

http://git-wip-us.apache.org/repos/asf/maven-scm/blob/184ef0e4/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java
 
b/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java
index 95f486e..4ac934e 100644
--- 
a/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java
+++ 
b/src/main/java/org/apache/maven/scm/provider/git/jgit/command/checkout/JGitCheckOutCommand.java
@@ -27,6 +27,7 @@ import java.util.List;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.ScmVersion;
 import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand;
 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
@@ -38,7 +39,11 @@ import org.codehaus.plexus.util.StringUtils;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.ProgressMonitor;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevTree;
+import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.transport.CredentialsProvider;
+import org.eclipse.jgit.treewalk.TreeWalk;
 
 /**
  * @author <a href="mailto:strub...@yahoo.de";>Mark Struberg</a>
@@ -73,12 +78,13 @@ public class JGitCheckOutCommand
 
             ProgressMonitor monitor = JGitUtils.getMonitor( getLogger() );
 
-            String branch = version == null ? null : version.getName();
+            String branch = version != null ? version.getName() : null;
+            
             if ( StringUtils.isBlank( branch ) )
             {
                 branch = Constants.MASTER;
             }
-
+            
             if ( !fileSet.getBasedir().exists() || !( new File( 
fileSet.getBasedir(), ".git" ).exists() ) )
             {
                 if ( fileSet.getBasedir().exists() )
@@ -97,19 +103,33 @@ public class JGitCheckOutCommand
             }
             else
             {
+               // repo already exists, fetch the remote
+               CredentialsProvider credentials = JGitUtils.getCredentials( 
(GitScmProviderRepository) repo );
+                getLogger().info( "fetching..." );
                 Git git = Git.open( fileSet.getBasedir() );
-                // switch branch if we currently are not on the proper one
-                getLogger().info( "checkout [" + branch + "] to " + 
fileSet.getBasedir() );
-                git.checkout().setName( branch ).call();
-
-                git.fetch().setRemote( repository.getFetchUrl() ).call();
-                git.pull().call();
+                
git.fetch().setCredentialsProvider(credentials).setProgressMonitor( monitor 
).call();                  
             }
 
-            List<ScmFile> listedFiles = new ArrayList<ScmFile>();
-            // TODO collect checkedout files
+            Git git = Git.open( fileSet.getBasedir() );
+            // switch to branch/tag if we currently are not on the proper one
+            getLogger().info( "checkout [" + branch + "] to " + 
fileSet.getBasedir() );
+            git.checkout().setName( branch ).call();
 
-            return new CheckOutScmResult( "checkout via JGit", listedFiles );
+            RevWalk revWalk = new RevWalk(git.getRepository());
+            RevCommit commit = 
revWalk.parseCommit(git.getRepository().resolve(Constants.HEAD));
+         
+                       final TreeWalk walk = new TreeWalk(git.getRepository());
+               walk.reset(); // drop the first empty tree, which we do not 
need here
+               walk.setRecursive(true);
+               walk.addTree(commit.getTree());
+               
+               List<ScmFile> listedFiles = new ArrayList<ScmFile>();
+               while (walk.next()) 
+               {
+                       listedFiles.add( new ScmFile( walk.getPathString(), 
ScmFileStatus.CHECKED_OUT));
+               }
+
+               return new CheckOutScmResult( "checkout via JGit", listedFiles 
);
         }
         catch ( Exception e )
         {
@@ -117,4 +137,5 @@ public class JGitCheckOutCommand
         }
     }
 
+
 }

http://git-wip-us.apache.org/repos/asf/maven-scm/blob/184ef0e4/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java
 
b/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java
index 1de70b5..68188fb 100644
--- 
a/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java
+++ 
b/src/main/java/org/apache/maven/scm/provider/git/jgit/command/tag/JGitTagCommand.java
@@ -25,6 +25,7 @@ import java.util.List;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmFileStatus;
 import org.apache.maven.scm.ScmResult;
 import org.apache.maven.scm.ScmTagParameters;
 import org.apache.maven.scm.command.tag.AbstractTagCommand;
@@ -36,7 +37,10 @@ import 
org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
 import org.codehaus.plexus.util.StringUtils;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.lib.Ref;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.transport.RefSpec;
+import org.eclipse.jgit.treewalk.TreeWalk;
 
 /**
  * @author <a href="mailto:strub...@yahoo.de";>Mark Struberg</a>
@@ -86,8 +90,18 @@ public class JGitTagCommand
             }
 
             // search for the tagged files
-            List<ScmFile> taggedFiles = new ArrayList<ScmFile>();
-            // TODO list all tagged files
+            RevWalk revWalk = new RevWalk(git.getRepository());
+            RevCommit commit = revWalk.parseCommit(tagRef.getObjectId());
+         
+                       final TreeWalk walk = new TreeWalk(git.getRepository());
+               walk.reset(); // drop the first empty tree, which we do not 
need here
+               walk.setRecursive(true);
+               walk.addTree(commit.getTree());
+               
+               List<ScmFile> taggedFiles = new ArrayList<ScmFile>();
+               while (walk.next()) {
+                       taggedFiles.add( new ScmFile( walk.getPathString(), 
ScmFileStatus.CHECKED_OUT));
+               }
 
             return new TagScmResult( "JGit tag", taggedFiles );
         }

Reply via email to