SVN 客户端提示 Delta source ended unexpectedly 错误的解决方法

本文主要是介绍SVN 客户端提示 Delta source ended unexpectedly 错误的解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

几天前,我开始将壹個 新的 Libcloud 网站迁移到我们的 Apache SVN 网站资源库的工作。
在这次迁移中,我进行了壹堆提交到SVN资源库的操作,这些提交操作是由新增(增加源代码,并且为新的网站生成静态文件)和删除(删除旧网站上的源代码和数据)组成。
在某些时候,我已经更新了网站内容,并且重新生成了网站,并且想再次提交更新过的文件。

当这些更新和删除操作在传输的时候,所有的壹切看上去都很好,但是就在服务器准备响应所有这些更新时,我接收到了如下的错误信息:

Transmitting file data ............svn: Commit failed (details follow):
svn: Delta source ended unexpectedly
我以前从来没有接到过这种错误信息,但是我猜测这個问题可能与壹些怪异的壹致性问题有关系,在此之前我增加新的网站文件和删除旧文件的时候有看到过这种问题。

当时我是这麽做的,我在提交和之后壹個大的提交之间运行了几次 svn update,尽管我觉得这不应该,但是我从服务器端接收到了旧的更新,因为本地资源库应该拥有所有的更新内容,并且表现出壹個最新的状态。
其中壹個我执行的提交操作很庞大,包含了大量的更新内容,所以我立即猜测到这可能与Apache GEO 负载均衡的 SVN 配置和壹些奇怪的复制/不同步的问题有关系。我等了好几分钟,然后再次运行 svn update 命令,这次问题似乎被解决了,我接收到了所有的更新内容,这些内容在壹致性问题出现之前就已经存在于本地了。看上去,我要麽再次重定向到相同的 SVN 服务器,要麽把现在所有的变化完全复制到另一台服务器上(非常需要,我不能够100%肯定当前的复制是同步的还是不同步的)。
无论如何,现在回到最初的问题上去。

在我遇到这個错误信息的时候,我尝试了如下事情:
1、我检查了 svn status 的输出内容;
2、我尝试使用命令 svn update -r <rev> 检出壹個早期的版本;
3、我尝试了clean checkout (使用命令 svn co <repo url> clean-checkout);
没有壹個方法是奏效的。

svn status 只显示已经存在的文件的更新状态(M),而且这种更新不包含增加的新文件,在我重新添加了更新过的文件之后(是的,这些文件并不包含.svn 目录),我尝试了上述的方法2和方法3,但是我仍然在提交的时候接收到了相同的错误信息。
在这种情况下,我彻底没撤了,而且我不想把这個问题报告给还不存在的ASF基础架构团队,所以我开始尝试用 Google 来找到问题的解决方案。最后我无功而返,但是至少有壹個共识就是这似乎是由壹种壹致性问题引起的,它发生在本地 checkout 出来的版本和远程资源库之间,就像我前面所猜测的那样。
为了找出到底是哪個文件或者文件夹引起的这個问题,我写了壹小段脚本,用于将所有的文件壹個接壹個的提交。
这样做对于项目成员们而言没有任何价值,甚至可能让他们不高兴,因为这样做会导致100多条提交记录,而且每条提交记录都会生成壹個发送给commits@ 邮件列表的通知邮件。

#!/bin/bashFILES=$(svn status generated/ | awk '{print $2}')for file in ${FILES}; dosvn commit ${file} -m "Regenerate website."
done
在这些提交操作中,除了三個文件提交失败以外,其它的都提交成功了。对于这三個叛逆的文件,服务器端返回了壹個错误信息说,这些文件不属于资源库的壹部分。这就是壹致性问题,因为 svn status 显示这些文件已经被更新过,并且没有新的内容引入。

为了解决这個问题,我尝试移除了这些文件(svn rm),把它们再重新加回来(svn add)最后提交更新。

# backup to-be removed files (exclude .svn directories)
svn rm generated/blog/tags/dir1
svn rm generated/blog/tags/dir2
svn rm generated/blog/tags/dir3
# re-added changed files back
svn add generated/blog/tags/*
svn commit -m "Regenerate website."
这次的做法解决了问题,在文件传输的过程中我没有再接收到任何错误信息。

我仍然不是很确信到底是什么导致了这個问题,因为这些文件在本地和远端状态上有明显的不壹致,但是我仍然很高兴解决了这個问题,我不需要再处理 SVN 了。
2014年01月01日最后更新:Justin 确认了 Apache SVN 配置使用了异步的复制方式,这解释了我前面遇到的第壹個问题。他同样提到,为了避免发生类似问题,我可以在使用 svn relocate 的时候明确的选择只使用 master 工作的方式。

英文原文出处:http://www.tomaz.me/2014/01/01/resolving-delta-source-ended-unexpectedly-svn-issue.html ,中文译文首发开源中国社区 http://my.oschina.net/bairrfhoinn/blog/195733 ,转载请注明原始出处。

转载于:https://my.oschina.net/bairrfhoinn/blog/195733

这篇关于SVN 客户端提示 Delta source ended unexpectedly 错误的解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616720

相关文章

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化