“运行”;svn回复。/-R";输出a";还原的[文件]”;每个文件的消息,即使只有一个文件实际进行了修改

“运行”;svn回复。/-R";输出a";还原的[文件]”;每个文件的消息,即使只有一个文件实际进行了修改,svn,Svn,我们在工作中大量使用SVN,我们经常合并分支,然后使用svnrevert./-R还原它们。出于某种原因,使用recursive标志还原存储库会在我们的repo(数千)中的每个文件中迭代,并输出一条Reverted[file]消息,即使svn stat仅显示一个单个文件实际上有需要还原的修改 我在Windows上的Bash上使用SVN1.9.7。我们的服务器在CentOS 7.3上运行SVN 1.9.9。我的同事正在运行MacOS和Ubuntu的混合系统。我们大多数人都经历过这个问题,所以我知道这

我们在工作中大量使用SVN,我们经常合并分支,然后使用
svnrevert./-R
还原它们。出于某种原因,使用recursive标志还原存储库会在我们的repo(数千)中的每个文件中迭代,并输出一条
Reverted[file]
消息,即使
svn stat
仅显示一个单个文件实际上有需要还原的修改

我在Windows上的Bash上使用SVN1.9.7。我们的服务器在CentOS 7.3上运行SVN 1.9.9。我的同事正在运行MacOS和Ubuntu的混合系统。我们大多数人都经历过这个问题,所以我知道这不是我的特定机器的奇怪问题


有人知道解决这个问题的方法吗?谷歌搜索很困难,因为搜索结果都是基本的svn回复问题。

这就是svn的工作原理。如果要还原所有源代码,必须检查整个源代码树。没有像在VisualStudio这样的编辑器中那样缓存未保存的更改,因为SVN没有那么聪明。值得一提的是,SVN
stat
diff
也在遍历整个树。我甚至认为,
git revert--recursive
将显示相同的行为,因为它需要检查每个文件是否有任何更改

真正防止这种情况发生的唯一方法是更明智地只恢复需要恢复的内容。您还可以通过管道连接到
/dev/null
(请参阅
)这就是svn的工作原理。如果要还原所有源代码,必须检查整个源代码树。没有像在VisualStudio这样的编辑器中那样缓存未保存的更改,因为SVN没有那么聪明。值得一提的是,SVN
stat
diff
也在遍历整个树。我甚至认为,
git revert--recursive
将显示相同的行为,因为它需要检查每个文件是否有任何更改

真正防止这种情况发生的唯一方法是更明智地只恢复需要恢复的内容。您还可以通过管道连接到
/dev/null
(请参阅
).

但并非每台机器上都会发生这种情况。而且,
svn stat
聪明到只显示更改的文件,而
svn revert
不聪明,这是没有道理的。我知道它需要遍历整个源代码树,但它不需要为未更改的文件输出任何内容。我不知道为什么它在不同的机器上会有不同的行为,但过度输出似乎只是
svn revert
的一种不幸行为。您还可以使用
--quiet
标志。查看哪些文件实际被修改和还原是需要的行为吗?@Sammy see上文注释我没有想到使用quiet标志。我希望只看到恢复了更改的文件,但我想我可以结合使用
svn stat
svn revert--quiet
。谢谢您的建议。@Sammy您也可以使用
svn stat | sed'/^$/d'| grep-v--“--Changelist”| awk'{print$2}'| xargs svn revert
进行恢复,并且只可以作为命令大声询问恢复(或丢失)的文件,顺便说一句,与使用
svn stat
svn revert
相比,这在磁盘上的读取速度更快。不过,并非每台机器都会发生这种情况。而且,
svn stat
聪明到只显示更改的文件,而
svn revert
不聪明,这是没有道理的。我知道它需要遍历整个源代码树,但它不需要为未更改的文件输出任何内容。我不知道为什么它在不同的机器上会有不同的行为,但过度输出似乎只是
svn revert
的一种不幸行为。您还可以使用
--quiet
标志。查看哪些文件实际被修改和还原是需要的行为吗?@Sammy see上文注释我没有想到使用quiet标志。我希望只看到恢复了更改的文件,但我想我可以结合使用
svn stat
svn revert--quiet
。谢谢你的建议。@Sammy你也可以使用
svn stat | sed'/^$/d'| grep-v----Changelist“| awk'{print$2}”| xargs svn revert
来进行恢复,并且只需将恢复的(或丢失的)文件作为命令进行呼叫,顺便说一句。这比使用
svn stat
svn revert
来进行磁盘读取要快,这种行为似乎取决于操作系统。我只看到修改过的文件在PowerShell中被还原,但是每个文件都在Ubuntu中被还原。有趣。@WarlikeChimpanzee至少我知道我没有疯。这可能是SVN中的一个bug,也可能是某些Linux版本上的一些奇怪的文件系统问题。实际上,这种行为似乎取决于操作系统。我只看到修改过的文件在PowerShell中被还原,但是每个文件都在Ubuntu中被还原。有趣。@WarlikeChimpanzee至少我知道我没有疯。这可能是SVN中的一个bug,也可能是某些Linux版本上的一些奇怪的文件系统问题。