java - SVNKit - 提交工作副本并强制存储库成为精确副本

标签 java svn svnkit

使用 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/

相关文章:

java - xml类对象使用(lamba->或其他优化的)迭代java获取子节点计数

svn - 是否可以在不更改工作副本的情况下撤消 SVN 提交?

java - svnkit 处理带有空格的 url

svn - 将目录提交给 Subversion

java - 来自指针的 JNA Java 结构

java - RGB 到 HSV 转换

java - 使用 Mule 发送格式化邮件

svn - 在当前存储库中创建 SVN 主干

svn - 如何列出我今天在 SVN 中提交的文件?

svn - 从svn获取最新版本号