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

时间:2012-09-05 15:47:55

标签: java svn svnkit

使用SVNKit库编写Java应用程序我面临以下问题

_1。提交

  • 客户应提交可能过时的工作副本
  • 提交后,即使工作副本已过时,存储库也必须包含与提交前工作副本完全相同的内容
  • 如果工作副本已过时,则服务器更改将丢失

_ 2.更新

  • 客户应更新可能包含本地更改的工作副本
  • 更新后,工作副本必须包含与存储库完全相同的内容
  • 如果工作副本有本地更改,则更新后必须是批次

使用SVNKit库是否可以轻松实现?

我对“强制提交”部分的实际想法

一个。存储库方面:处理恢复为“工作副本版本”

湾客户端:处理更新,接受任何冲突本地更改

℃。客户端:处理提交

我不确定这是否容易,尤其是第二点,是否有任何高级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);
    

谢谢!

2 个答案:

答案 0 :(得分:1)

好的,这听起来有点乱。 svn的工作是多个程序员正在处理相同的源代码。所以说你希望repo成为你工作副本的精确副本意味着你要删除/恢复repo中其他人的更改。这没有意义。 你问的实际上是一个日常任务。你检查了代码,稍微改了一下,在那段时间,其他人检查了相同的代码,更改了代码,然后提交了更改

现在,您必须以不会“撤消”其他人的努力的方式提交您的更改,对吧? 使用eclipse或您正在使用的任何svn工具执行svn同步。 如果您不确定,请在继续下一部分之前备份整个项目

如果没有冲突并且这很重要,那么请首先检查存储库中的代码,然后检查代码中的SECOND。

如果存在冲突,在这种情况下你必须在更新和提交之前解决它们,所以逐个转到冲突的行,将它们集成到你的代码中,当你完成一个类/文件然后标记它就像“冲突得到解决”。

一旦解决了所有冲突,然后按照第一步中的说明进行操作,即从repo更新,然后提交代码

答案 1 :(得分:0)

我正在使用SVNnotifier将所有内容同步。

http://svnnotifier.tigris.org/ 还有另一个程序,我忘记了名字,但明天我会明白的。

希望它有所帮助!