チェンジセット 18

差分発生行の前後
無視リスト:
コミット日時:
2007/11/16 11:54:20 (14 年前)
コミッタ:
shinomiya
ログメッセージ:

#1:空のディレクトリがエクスポートできない

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/im-svn-diff-exporter/src/main/java/org/intra_mart/svn/util/DiffExporter.java

    r14 r18  
    5959        private static String diffFile   = destDir + "diff.txt"; 
    6060        private static String resultFile = destDir + "result.txt"; 
     61         
     62        private static boolean ignoreEmptyDir = false; 
    6163 
    6264        /** 
     
    7880//                                               "", 
    7981//                                               DiffExporter.convertRevision(revisionTo), 
    80 //                                               destDir); 
     82//                                               destDir, 
     83//                                               ignoreEmptyDir); 
    8184// 
    8285//              // Diff 開始 
     
    138141         * @param revision 
    139142         * @param destDir 
     143         * @param ignoreEmptyDir 
    140144         * @throws SVNException 
    141145         * @throws IOException 
     
    144148                                                 String filePath, 
    145149                                                 SVNRevision revision, 
    146                                                  String destDir) 
     150                                                 String destDir, 
     151                                                 boolean ignoreEmptyDir) 
    147152                                        throws SVNException, IOException { 
    148153 
     
    160165                // ファイルの場合 
    161166                if (nodeKind == SVNNodeKind.FILE) { 
    162                         SVNDirEntry entry = repository.info(filePath, revisionNumber); 
    163167                         
    164                         File targetFile = null; 
    165                         if(filePath != null && filePath.length() != 0){ 
    166                                 targetFile = new File(destDir, filePath); 
    167                                 System.out.println(destDir + "/" + filePath); 
    168                         } 
    169                         else{ 
    170                                 targetFile = new File(destDir, entry.getRelativePath()); 
    171                                 System.out.println(destDir + "/" + entry.getRelativePath()); 
    172                         } 
    173                                  
     168                        File targetFile = createTargetFile(repository, filePath, destDir, revisionNumber);                               
    174169                        targetFile.getParentFile().mkdirs(); 
    175170                         
     
    185180 
    186181                    Collection entries = repository.getDir(filePath, revisionNumber, null, (Collection) null); 
    187                     Iterator iterator = entries.iterator(); 
    188                 while (iterator.hasNext()) { 
    189                     SVNDirEntry entry = (SVNDirEntry) iterator.next(); 
    190                      
    191                                 String childPath = (filePath != null && filePath.length() != 0) ? 
    192                                                                                 filePath + "/" + entry.getRelativePath() : 
    193                                                                                         entry.getRelativePath(); 
    194  
    195                                 // 再帰 
    196                         this.doExport(repository, 
    197                                          childPath, 
    198                                                  revision, 
    199                                                  destDir); 
    200                 } 
     182 
     183                    if(entries.size() == 0 && ignoreEmptyDir == false){ 
     184                                File targetFile = createTargetFile(repository, filePath, destDir, revisionNumber); 
     185                                targetFile.mkdirs(); 
     186                    } 
     187                    else{ 
     188                            Iterator iterator = entries.iterator(); 
     189                        while (iterator.hasNext()) { 
     190                            SVNDirEntry entry = (SVNDirEntry) iterator.next(); 
     191                             
     192                                        String childPath = (filePath != null && filePath.length() != 0) ? 
     193                                                                                        filePath + "/" + entry.getRelativePath() : 
     194                                                                                                entry.getRelativePath(); 
     195         
     196                                        // 再帰 
     197                                this.doExport(repository, 
     198                                                 childPath, 
     199                                                         revision, 
     200                                                         destDir, 
     201                                                         ignoreEmptyDir); 
     202                        } 
     203                    } 
    201204                } 
    202205                // そのほかは、エラー扱い 
     
    207210                } 
    208211                 
     212        } 
     213 
     214        private File createTargetFile(SVNRepository repository, String filePath, 
     215                        String destDir, long revisionNumber) throws SVNException { 
     216                SVNDirEntry entry = repository.info(filePath, revisionNumber); 
     217                 
     218                File targetFile = null; 
     219                if(filePath != null && filePath.length() != 0){ 
     220                        targetFile = new File(destDir, filePath); 
     221                        System.out.println(destDir + "/" + filePath); 
     222                } 
     223                else{ 
     224                        targetFile = new File(destDir, entry.getRelativePath()); 
     225                        System.out.println(destDir + "/" + entry.getRelativePath()); 
     226                } 
     227                return targetFile; 
    209228        } 
    210229         
  • trunk/im-svn-diff-exporter/src/main/java/org/intra_mart/svn/util/ExportTask.java

    r14 r18  
    1919        private String destDir  = System.getProperty("java.io.tmpdir") + "/ExportTaskTemp/"; 
    2020 
    21                  
     21        private boolean ignoreEmptyDir = false; 
     22         
    2223        /* (non-Javadoc) 
    2324         * @see org.apache.tools.ant.Task#execute() 
     
    3536                                                         "", 
    3637                                                         DiffExporter.convertRevision(revision), 
    37                                                          destDir); 
     38                                                         destDir, 
     39                                                         ignoreEmptyDir); 
    3840                } 
    3941                catch (SVNException e) { 
     
    7476        } 
    7577 
     78 
     79        public boolean isIgnoreEmptyDir() { 
     80                return ignoreEmptyDir; 
     81        } 
     82 
     83 
     84        public void setIgnoreEmptyDir(boolean ignoreEmptyDir) { 
     85                this.ignoreEmptyDir = ignoreEmptyDir; 
     86        } 
     87 
    7688}