0

我有一个基本的 SVN 存储库和这个场景:

我有一个使用 SVN 更新源代码的共享服务器。首先,我将整个 repo 更新为svn up最新版本,例如:12. 但是在有人(不要问我为什么)仅在 1 个文件上使用svn up -rXX(其中 XX != )之后几次。12

svn up -r10 public/style.css

我回到文件夹,当我使用svn info修订版时12,我需要列出与根文件夹不同修订版的所有文件?

我正在寻找一个更好的解决方案来全局化所有文件并使用 svn info :)

4

2 回答 2

0

我需要列出与根文件夹不同版本的所有文件吗?

不,您不需要这个 - 不要混淆术语“存储库修订”(全局)和“文件修订”(对于任何版本化和在时间文件期间更改)

  • 全局修订是存储库中所有对象在某个时刻的历史片段(它们的修订可能不同,只是因为存储在存储库更改 /revision/可能不会影响每个文件

  • 文件修订版是该文件在某个时刻的状态(并且自身修订版未更改的文件可能并且可以存在于不同的全局修订版中)

    svn ls -v http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk/

     36 lazybadg              янв 09 11:45 ./
    
     34 lazybadg           42 мар 24  2012 Dr?p?r.ma?ar.sv?nskan.man.eller.smalensk?n.txt
    
     32 lazybadg           88 дек 27  2011 Hello.de.txt
    
     33 lazybadg           82 фев 28  2012 Hello.en.txt
    
     36 lazybadg           88 янв 09 11:45 Hello.eo.txt
    
     35 lazybadg           90 янв 09 11:35 Hello.fr.txt
    

(如您所见,在主干文件的 HEAD 中有不同的修订版 - 没关系)

>svn info http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk/
...
Revision: 37
...
Last Changed Rev: 36
...

如果你想将工作副本从当前的 Mixed 返回到存储库 r12 的状态,你只有svn up -r 12或者,如果是 12,如果 HEAD -svn up

流程演示(与上述相同的 URL)

>svn co http://mayorat.ursinecorner.ru:8088/svn/Hello/trunk/
A    trunk\Dr?p?r.ma?ar.sv?nskan.man.eller.smalensk?n.txt
A    trunk\Hello.en.txt
A    trunk\Hello.eo.txt
A    trunk\Hello.fr.txt
A    trunk\Hello.de.txt
 U   trunk
Checked out revision 37.

混合我们的厕所

>svn up -r 30 Hello.de.txt
Updating 'Hello.de.txt':
U    Hello.de.txt
Updated to revision 30.

(我们将文件更新为存储库修订版30 的状态,Hello.de.txt 修订版可能 <= 30)

检查厕所

>svn status

(无输出 - WC 很干净,可以轻松更新)

回归纯HEAD

>svn up
Updating '.':
U    Hello.de.txt
Updated to revision 37.

(同样:37 是 repo 的修订版,在这种状态下 Hello.de.txt 可能/并且拥有/自己的修订版 - 根据 ls 是 32 - 但我们不能准确地知道这个修订版,Subversion 为我们存储这些数据并在需要时使用)

于 2013-02-19T08:55:49.260 回答
0

首先要做的事情是开始进行艰苦的战斗,以摆脱陷入困境的困境。您应该能够在共享和混合工作副本的链条上出售风险。

你可以从你的工作副本中做这样的事情

svn status -v | grep -v 12

列出工作副本中所有文件的 rev 并打印那些没有 12

于 2013-02-18T22:16:25.693 回答