我有一个基本的SVN存储库和这个场景:
我有一个使用SVN的共享服务器来更新源代码。首先,我使用svn up
将整个仓库更新为最新版本,例如:12
。但很少有人(不要问我为什么)在{1}上使用svn up -rXX
(其中XX!= 12
)。
svn up -r10 public/style.css
我回到文件夹,当我使用svn info
时,修订版总是12
但是我需要列出所有不同于根文件夹的文件?
我正在寻找一个更好的解决方案,包括所有文件并使用svn信息:)
答案 0 :(得分:0)
首先要做的事情 - 开始奋战,以摆脱陷入困境的困境。您应该能够将风险出售在共享和混合工作副本的链中。
你可以从你的工作副本中做这样的事情
svn status -v | grep -v 12
列出工作副本中所有文件的rev,并打印那些没有12
的文件答案 1 :(得分:0)
我需要列出与根文件夹不同的所有文件?
不,你不需要这个 - 不要混淆术语“Repository Revision”(全局)和“File 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
...
如果你想从当前的混合版本返回工作副本到存储库r12的状态,那么你只有svn up -r 12
或者如果是12,那么你是svn up
演示流程(与上述网址相同)
>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.
混合我们的WC
>svn up -r 30 Hello.de.txt
Updating 'Hello.de.txt':
U Hello.de.txt
Updated to revision 30.
(我们将文件更新到状态,其中它位于存储库修订版 30,Hello.de.txt修订版可能<= 30)
检查WC
>svn status
(没有输出 - WC是干净的,可以毫不费力地更新)
返回纯HEAD
>svn up
Updating '.':
U Hello.de.txt
Updated to revision 37.
(同样:37是repo的修订版,在这种状态下Hello.de.txt可能/并且有/自己的修订版 - 32根据ls - 但我们完全不知道这个修订版,Subversion为我们存储了这些数据在需要时使用)