假设我在Subversion仓库中有两个文件:
workingcopy/
file1.txt
file2.txt
Run Code Online (Sandbox Code Playgroud)
然后我重命名一个SVN外部:
$ mv file1.txt fileA.txt
Run Code Online (Sandbox Code Playgroud)
现在,SVN将file1.txt标记为缺失,fileA.txt为无版本
$ svn st
! file1.txt
? fileA.txt
Run Code Online (Sandbox Code Playgroud)
据SVN所知,我删除file1.txt并创建了一个完全不同的文件fileA.txt,因此它不知道跟踪文件之间的变化.
编辑:这确实有效,我只是不能正确拼写文件名:)
同样,如果删除文件
$ rm file2.txt
$ svn st
! file2.txt
Run Code Online (Sandbox Code Playgroud)
SVN只知道文件丢失,并尝试将其删除不起作用:
$ svn remove file2.txt
svn: 'file2.txt' does not exist
Run Code Online (Sandbox Code Playgroud)
我知道在Mercurial中,--after无论Mercurial在工作副本中看到什么,您都可以在标记之后将文件标记为移动,复制,删除等.
SVN中有类似的技巧吗?
Raf*_*afe 12
也许您需要更新您的Subversion版本:
$ svn --version
svn, version 1.6.16 (r1073529)
$ rm data.xml
$ svn status
! data.xml
$ svn rm data.xml
D data.xml
$ svn status
D data.xml
Run Code Online (Sandbox Code Playgroud)
同样的事情不能用于重命名,但编写一个执行它的shell脚本会非常容易:
#!/bin/sh
mv $2 $1
svn rename $1 $2
Run Code Online (Sandbox Code Playgroud)
或者只是为了好玩,您可以将以下内容添加到.bashrc或.bash_profile:
svn_mv_after()
{
mv $2 $1
svn mv $1 $2
}
alias svnmva=svn_mv_after
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您使用TortiseSVN,可以从提交屏幕执行此操作.右键单击已删除并添加的文件(同一个文件,只需移动),您将获得修复移动的选项.
http://tortoisesvn.net/repairmoves.html
| 归档时间: |
|
| 查看次数: |
6570 次 |
| 最近记录: |