svn 온라인 소스 목록, 버 전 번호, 사용자 이름, 원본 파일 생 성


프로젝트 가 출시 되 려 면 온라인 소스 목록 을 생 성 해 야 합 니 다.
필요 열
원본 이름, 원본 경로, 유형, SVN 버 전 번호, 제출 날짜, 개발 자
 
도구:
Setup - Subversion - 1.6.23. msi 대응 TortoiseSVN 1.6
Setup - Subversion - 1.7.2.2. msi 대응 TortoiseSVN 1.7
Setup - Subversion - 1.8.14. msi 대응 TortoiseSVN 1.8
다운로드 주소:
http://happyqing.iteye.com/blog/2270112
 
Subversion 버 전이 낮 으 면 오류 가 발생 합 니 다.
svn:  경고: "D: \ \ subversion \ PRO \ trunk \ sourcecode \ \ procject Name" 작업 사본 이 아 닙 니 다.
 
svn: 경로 'D: \ subversion \ PRO \ trunk \ sourcecode \ \ procject Name' 은 Subversion 1.7 이상 버 전의 작업 사본 인 것 같 습 니 다.이 작업 던 전 을 사용 하려 면 Subversion 클 라 이언 트 를 업그레이드 하 십시오.
 
 
명령:
설치 후 환경 변 수 를 설정 합 니 다.
svn stauts: 로 컬 던 전에 서 통계 정보 
svn status -v D:\subversion\PRO\trunk\sourcecode\projectName> projectNameManifest.txt
이 명령 은 제출 시간 을 표시 하지 못 했 습 니 다.
 
이러한 텍스트 생 성
                 3        3 happyqing  D:\subversion\PRO\trunk\sourcecode\projectName\src\org\jeecgframework\core\annotation
M                3        3 happyqing  D:\subversion\PRO\trunk\sourcecode\projectName\src\org\jeecgframework\core\annotation\Ehcache.java
?                3        3 happyqing  D:\subversion\PRO\trunk\sourcecode\projectName\src\org\jeecgframework\core\annotation\JeecgEntityTitle.java

 
 제1 열     제2 열    제3 열    제4 열    5 열
 상태.       ?          버 전 번호  사용자 이름   원본 파일
 
상 태 는?로 컬 에서 새로 추 가 된 것 입 니 다. M 로 컬 수정, 그리고 다른 것 을 먼저 처리 해 야 합 니 다.
 
정리 하 다.
생 성 된 텍스트 파일 은 사용 할 수 있 지만 사용 하기 가 너무 번 거 로 워 정리 가 필요 합 니 다.
프로그램 으로 정리 한 효과:
Ehcache.java	projectName\src\org\jeecgframework\core\annotation\Ehcache.java		3	2016/1/6	  
JeecgEntityTitle.java	projectName\src\org\jeecgframework\core\annotation\JeecgEntityTitle.java		3	2016/1/6	  

엑셀 에 붙 여 넣 을 때 오른쪽 단 추 를 눌 러 붙 여 넣 기 옵션 A (텍스트 만 유지)
 
도구 클래스
package util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * SVN    
 *      svn        
 * svn status -v D:\subversion\PRO\trunk\sourcecode\projectName > projectNameManifest.txt
 * @author happyqing
 * @Since 2016.1.13
 */
public class SVNManifest {
	
    private static String pathPrefix;
    private static Map<String, String> userNameMap = new HashMap<String, String>();
    private static Map<String, String> directoryDateMap = new HashMap<String, String>();
	
    /**
     *   txt  
     * @param sourceFilePath
     * @param destFilePath
     */
	public static void readWriteTxt(String sourceFilePath, String destFilePath){
		try {
			File file = new File(sourceFilePath);
			File dest = new File(destFilePath);
			//BufferedReader reader = new BufferedReader(new FileReader(file)); //  
			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK")); //        
			BufferedWriter writer = new BufferedWriter(new FileWriter(dest));
			String line = reader.readLine();
			int readLines = 0;
			int writeLines = 0;
			while ((line = reader.readLine()) != null) {
				readLines++;
				if(validateProcess(line)){
					line = processLine(line);
					writer.write(line);
					writeLines++;
				}
			}
			System.out.println("   :"+readLines);
			System.out.println("   :"+writeLines);
			writer.flush();
			reader.close();
			writer.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 *           
	 * @param line
	 * @return
	 */
	public static boolean validateProcess(String line){
		//?      
		if(line.startsWith("?")){
			return false;
		}
		//      
		if(line.indexOf(".") < 0){
			return false;
		}
		
		//  resources、src、WebContent  
//		if(!(txt.indexOf("projectName\\resources\\") > -1 || txt.indexOf("projectName\\src\\") > -1 || txt.indexOf("projectName\\WebContent\\") > -1)){
//			return false;
//		}
		boolean needProcess = false;
		//Map<String, String> map = new HashMap <String, String>();
		Iterator<Map.Entry<String, String>> entries = directoryDateMap.entrySet().iterator();      
		while(entries.hasNext()){
		    Map.Entry<String, String> entry = entries.next();
		    if(line.indexOf(entry.getKey())> 0){
		    	needProcess = true;
		    }
		}
		
		if(!needProcess){
			return false;
		}

		return true;
	}
	
	/**
	 *       
	 * @param line
	 * @return
	 */
	public static String processLine(String line){
		//      tab
		String str1 = line.substring(0, line.indexOf(pathPrefix));	//   
		String str2 = line.substring(line.indexOf(pathPrefix));		//   ,          
		line = str1.replaceAll(" +", "\t") + str2;
		//      
		String filePath = line.substring(line.lastIndexOf("\t")+1);
		String fileName = filePath.substring(filePath.lastIndexOf("\\")+1);
		line = line + "\t" + fileName; // + "\r
"; // Iterator<Map.Entry<String, String>> entries = userNameMap.entrySet().iterator(); while(entries.hasNext()){ Map.Entry<String, String> entry = entries.next(); if(line.indexOf(entry.getKey()) > -1){ line = line.replaceAll(entry.getKey(), entry.getValue()); } } // ( ) Iterator<Map.Entry<String, String>> entries2 = directoryDateMap.entrySet().iterator(); while(entries2.hasNext()){ Map.Entry<String, String> entry = entries2.next(); if(line.indexOf(entry.getKey()) > -1){ line = line + "\t" + entry.getValue(); } } // ( ) String[] columnArr = line.split("\t"); line = columnArr[5] + "\t" + columnArr[4] + "\t" + columnArr[2] + "\\t" + columnArr[6] + "\t" + columnArr[3]; line+="\r
"; // String pathPrefixRegex = pathPrefix.replaceAll("\\\\", "\\\\\\\\"); //System.out.println(pathPrefix); line = line.replaceAll(pathPrefixRegex, ""); return line; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // , pathPrefix = "D:\\subversion\\PRO\\trunk\\sourcecode\\"; // ( Sting[][]) userNameMap.put("\tzhaoyi\t", "\t \t"); userNameMap.put("\tqianer\t", "\t \t"); // , TortoiseSVN directoryDateMap.put("projectName\\resources\\", "2016/1/11"); directoryDateMap.put("projectName\\src", "2016/1/6"); directoryDateMap.put("projectName\\WebContent\\", "2015/12/30"); SVNManifest.readWriteTxt("D:\\project\\document\\projectNameManifest.txt","D:\\project\\document\\projectNameManifestFormat.txt"); } }

 

좋은 웹페이지 즐겨찾기