使用 SVNKit 库编写 Java 应用程序时遇到以下问题
_1。提交
- 客户应该提交可能已过时的工作副本
- 提交后,存储库必须包含与提交前工作副本完全相同的内容,即使工作副本已过时
- 如果工作副本已过时,服务器更改将会丢失
_ 2.更新
- 客户应该更新他的工作副本,其中可能包含本地更改
- 更新后,工作副本必须包含与存储库完全相同的内容
- 如果工作副本有本地更改,则更新后它们一定会有很多
使用 SVNKit 库是否可以轻松实现?
我对“强制提交”部分的实际想法
a.存储库端:处理恢复到“工作副本版本”
b.客户端:处理更新接受任何冲突的本地更改
c.客户端:处理提交
我不确定这是否容易,尤其是对于第二点,是否有任何高级 API 方法可以做到这一点? “强制提交”部分对我来说是最紧迫的..
我对“强制更新”部分的实际想法
我处理了一个简单的更新,但不确定是否会丢失本地更改
final File localProjectDirectory = new File(localProjectDirectoryPath); final SVNClientManager cm = SVNClientManager.newInstance(new DefaultSVNOptions()); final SVNUpdateClient uc = cm.getUpdateClient(); final SVNRevision svnHeadRevision = SVNRevision.HEAD; final SVNDepth svnRecursiveDepth = SVNDepth.fromRecurse(true); final boolean allowUnversionedObstructions = false; final boolean depthIsSticky = true; uc.doUpdate(localSyncProjectDirectory, svnHeadRevision, svnRecursiveDepth, allowUnversionedObstructions, depthIsSticky);
谢谢!
最佳答案
好吧,这听起来有点困惑。 svn 的工作是多个程序员正在处理相同的源代码。因此,如果您希望存储库成为工作副本的精确副本,则意味着您希望删除/恢复存储库中其他内容的更改。这没有道理。 您所要求的实际上是一项日常任务。您 checkout 了代码,对其进行了一些更改,在此期间其他人 checkout 了相同的代码,对其进行了更改,然后提交了更改
现在您必须以不会“撤销”其他人的努力的方式提交更改,对吧? 使用 eclipse 或您正在使用的任何 svn 工具进行 svn 同步。 如果您不确定,请在继续下一部分之前备份整个项目
如果没有冲突并且这很重要,那么首先从存储库中 checkout 代码,然后再 checkin 您的代码。
如果存在冲突怎么办,在这种情况下,您必须在更新和提交之前解决它们,因此请逐一查找冲突行,将它们集成到您的代码中,当您完成一个类/文件后,将其标记为“冲突已解决”。
解决所有冲突后,按照第一步中的说明进行操作,即从存储库更新,然后提交代码
关于java - SVNKit - 提交工作副本并强制存储库成为精确副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12285206/