SVN查找提交记录

package org.mo.svn.util;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.tmatesoft.svn.core.ISVNLogEntryHandler;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNLogEntry;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory;
import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl;
import org.tmatesoft.svn.core.io.SVNRepository;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import org.tmatesoft.svn.core.wc.SVNWCUtil;

public class SVNutil {
	private static SVNRepository repository = null;
	
	static {
		DAVRepositoryFactory.setup();
		SVNRepositoryFactoryImpl.setup();
		FSRepositoryFactory.setup();
	}

	public SVNutil(String url, String username, String password) {
		if (!url.trim().isEmpty() && !username.trim().isEmpty() && !password.trim().isEmpty()) {
			try {
				// 身份验证
				ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(username, password);
				repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(url));
				repository.setAuthenticationManager(authManager);
			} catch (SVNException e) {
				throw new RuntimeException("repository 对象为空!");
			}
		}
	}

	/**
	 * 根据注释的信息查找内容
	 * 
	 * @param message
	 * @return
	 * @throws SVNException
	 */
	public List<String> getLogByMessage(final String message) throws SVNException {
		long startRevision = 0;
		long endRevision = -1;// 表示最后一个版本
		// String[] 为过滤的文件路径前缀,为空表示不进行过滤
        final List<String> history = new ArrayList<String>();
        //这里自己修改下,有BUG
		repository.log(new String[] {}, startRevision, endRevision, true, true, new ISVNLogEntryHandler() {
					@Override
					public void handleLogEntry(SVNLogEntry svnlogentry) throws SVNException {
						if (message.equals(svnlogentry.getMessage())) {
							// getChangedPaths为提交的历史记录MAP key为文件名,value为文件详情
							Map changedPaths = svnlogentry.getChangedPaths();
							// 追加了所有的数据。
							history.addAll(changedPaths.keySet());
						}
					}
				});
		
		// 去除重复
		HashSet h = new HashSet(history);
		history.clear();
		history.addAll(h);
		
		//去除文件夹,非文件类型
		List<String> newLogByMessage = new ArrayList<String>();
		for (String removeNoPoint : history) {
			if (removeNoPoint.contains(".")) {
				newLogByMessage.add(removeNoPoint);
			}
		}
		return newLogByMessage;
	}
}

用的jar :svnkit-1.3.5.jar

转载于:https://my.oschina.net/moziqi/blog/397666

### 回答1: SVN(Subversion)是一款版本控制系统,它可以让我们轻松管理项目的版本和更新记录。查看历史提交记录SVN中的一个重要功能,它能够让我们追溯到项目的某个具体版本,并了解该版本中的修改记录。 要查看SVN历史提交记录,我们可以使用命令行工具或者图形化界面工具。在命令行中,可以使用“svn log”命令来查看历史提交记录。该命令会输出项目的所有提交记录,包括提交者、提交时间、修改文件等详细信息。我们可以添加一些参数来筛选想要查看的记录,比如“svn log -r10:20”可以查看版本10到20之间的提交记录。 在图形界面工具中,SVN客户端软件通常都支持查看历史提交记录的功能。用户可以使用图形化界面来方便地查看历史记录以及查找特定版本的信息。图形化界面中,通常会将每个提交记录呈现为一个日志条目,其中包括提交者、提交时间、提交说明、修改文件等信息。 总的来说,查看SVN历史提交记录是一个重要的操作,它能够让我们清楚地了解项目的变更历史,以及每个版本中的具体修改内容。通过这个功能,我们可以更好地掌握项目的发展情况,并及时监控任何异常变化。 ### 回答2: SVN(Subversion)是一款流行的开源版本控制系统,它可以记录每次代码提交的历史,让开发者能够方便地查看代码的变化,及时发现问题并进行修复。想要查看SVN的历史提交记录,需要按照以下步骤进行操作: 1.使用SVN客户端登录版本库。 2.选择要查看历史提交记录的文件或目录,右键选择“SVN提交历史记录”。 3.在弹出的“提交历史记录”窗口中,可以看到提交的各个版本及其提交时间、提交者、提交信息等。 4.选中其中一个版本,可以看到该版本的具体修改内容,包括新增、删除、修改等操作。 5.如果需要比较该版本与其他版本的差异,可以选中两个版本,右键选择“比较版本”,即可看到它们之间的差异。 6.要查看更详细的提交信息,可以选择某个版本,右键选择“查看提交信息”,即可查看该次提交的详细信息,包括修改的文件、修改说明等等。 总之,SVN提交历史进行了完整记录,开发者可以根据需要查看每个版本及其修改内容,方便查找问题及时修复。 ### 回答3: SVN(Subversion)是一种免费的源代码版本控制系统,它可以帮助开发团队更好地管理和控制维护代码的变化,也可以轻松查看历史提交记录。 要查看SVN历史提交记录,可以使用以下两种方法: 方法一:使用命令行界面 1. 打开命令行界面(如Windows的cmd或Linux的终端); 2. 进入要查看历史记录的目录; 3. 输入以下命令: ``` svn log ``` 4. 按Enter键,系统就会输出该目录下所有版本的提交记录,包括每个版本的作者、提交日期、提交注释以及变更的文件; 5. 如果要查看某个特定版本的提交记录,可以使用以下命令: ``` svn log -r 版本号 ``` 版号可以是数字(如-1、-2、-3等)或日期(如2018-09-01)等。 方法二:使用SVN客户端软件 1. 打开SVN客户端软件(如TortoiseSVN、SmartSVN等); 2. 找到要查看历史记录的目录; 3. 右键点击该目录,选择SVN log(或查看日志); 4. 系统就会输出该目录下所有版本的提交记录,包括每个版本的作者、提交日期、提交注释以及变更的文件; 5. 如果要查看某个特定版本的提交记录,可以选择该版本号,然后点击查看详细信息。 需要注意的是,SVN历史提交记录是非常重要的版本信息,对于开发人员和项目经理来说都是必须掌握和使用的工具。因此,我们应该经常查看和整理版本提交记录,并在必要时撤销提交或回退版本,以确保代码的稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值