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");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
svn 팁1. SVN 서버 IP 교체 2.특정 버전 가져오기 3.한 버전의 파일을 업데이트합니다. * svn: E155036: Working copy is too old (format 10, created by Subvers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.