我需要在我的svn存储库中复制相同的文件

时间:2011-06-28 08:09:37

标签: svn

我有一个简单的py脚本继承层次结构 说CatCoolCat以及FurryCat。这个文件必须(根据我脑中的声音)放在SVN中的两个不同的文件夹下,其中Cat模块必须都在FurryCat的目录中,CoolCat相同}。 - >所以我在存储库中复制了相同的文件。

https://svn/.../FurryCat
    /FurryCat.py
    /Cat.py

https://svn.../CoolCat
    /CoolCat.py
    /Cat.py

我们都是忙碌的人类,所以我们忘了提交文件两次,所以很难发现它们不同步所以现在你必须观察svn日志,等等。根据我的经验,合并python代码几乎总是证明是手动合并。

我猜它是一些

svn propedit svn:externals ...

2 个答案:

答案 0 :(得分:1)

您可以在一个文件中创建一个符号链接(或Windows中的快捷方式),指向另一个文件夹中的实际文件,并将该符号链接提交给SVN。

然而,这个问题是DRY(不要重复自己)编程原理的确切原因。您的问题正是为什么您应该避免重复代码,除非绝对必要。我确信有一种方法可以构建你的代码,这样两个类都只有一个文件继承,我会研究这个解决方案。我会考虑解决这个问题的“正确方法”,而不是在两个地方管理文件的一些kludge。这对我来说似乎是不好的做法。

答案 1 :(得分:0)

我走了svn:externals路径,这就是你如何做到的:
基本上,当您进行外部定义时,文件会出现在两个位置。 这就像量子理论,其中粒子同时存在于许多地方。

这是我在此发现的最佳教程。 http://blog.kowalczyk.info/article/Short-tutorial-on-svn-propset-for-svnexternals-p.html

让我困惑的是文件夹与文件之间的定义差异。

普通https://svn/path/to/common_folder

- >文件夹'common'用文件创建。

coolest_script_ever.py https://svn/deliciouscripts/awesome.py

- >该文件进入当前目录。

什么是混乱?对我来说这很令人困惑,因为我习惯使用SVN'你总是检查一个文件夹'。

一般来说,为了摆脱错误的svn:externals定义,你应该做一个

svn propdel svn:externals .

在工作目录中。 但最好让它第一次运作......如果你犯了错误就恢复原状。