例:
$ svn copy foo.txt bar.txt A bar.txt
你什么时候使用这种技术?为什么?
这个命令(取自svn的"红皮书")是否会创建一份副本,
同时保留与之共享的历史记录
?
如果我在改变
,会发生
什么?
在其他现代系统(Clearcase,Accurev,Perforce)中,这相当于什么?
让我强调我正在寻找的观点:
这种分支是在文件级别吗?
如果您在同一分支中使用它会发生什么,即创建文件的副本而不是开始更改该新文件.都在同一个分支?
我知道它也用于标记,但有趣的是我
在文件级别执行时会发生什么.
除了分支/标记之外,您还可以在将文件拆分为两个时使用它.在这种情况下,两个新文件都将具有历史记录,您将能够在拆分之前查看代码.
顺便说一句:这是SVN的少数功能之一,但Git没有(Git会尝试在事后猜测代码的来源,特别是如果你添加-C
命令).
你什么时候使用这种技术?为什么?
要创建标记,也要创建分支,尽管通常在目录而不是单个文件中使用它.标记是一个或多个文件的副本,为方便起见而保留这些文件但不会再次更改.分支是一个或多个文件的副本,然后与原始文件分开演变
此命令是否会创建副本,
foo.txt
同时保留要与之共享的历史记录bar.txt
?
不完全,foo.txt
历史将被有效地复制到历史中bar.txt
,然后在历史中出现一个额外的条目,bar.txt
表明它是从中复制的foo.txt
,之后它们是独立的.因此,直到副本的历史是相同/共享的.
如果我在改变
bar.txt
,会发生foo.txt
什么?
没什么,它们是完全分开的.但是您可以稍后将更改从一个合并到另一个.
这是一个稍微不寻常的用法,但我发现有时我必须将源文件分成两个单独的文件 - 例如,如果它包含两组不相关的功能,并且我使用svn copy来执行此操作.然后我修改两个文件并从每个文件中删除不适当的位.这样,两个新文件都保留了相关位的修订历史记录.
在其他现代系统(Clearcase,Accurev,Perforce)中,这相当于什么?
git会注意到普通副本上的文件是相同的,并将其显示为副本.