就地编辑,版本控制 - 您的解决方案是什么?

时间:2009-01-02 06:03:40

标签: svn version-control rcs

我正在使用SVN进行开发任务,但仍然有许多使用RCS管理的文件,因为在我的私有SVN存储库工作副本中编辑它们似乎不合理(因为它们通常只是配置文件也是最好的测试到位)。在SVN控制下存放文件的地方有一个存储库的工作副本似乎也不合理,所以我只是使用RCS。

您管理文件的方法是什么,理想情况下不应移动/编辑和测试?

更确切地说:我想拥有相当于

的东西
  • 拥有写保护的file.txt
  • 像“co -l file.txt”(RCS)这样的命令,使其可编辑
  • 能够就地编辑并立即测试
  • 像“ci -u file.txt”(RCS)这样的命令记录更改,添加注释并使其再次为只读
  • 其他用户也应该能够在同一个地方执行此操作
  • 但是,版本信息应该放在一个安全的地方(可能是svn rep),在另一台服务器上

4 个答案:

答案 0 :(得分:3)

我在写文件系统(CoW)上使用副本,例如Ext3cow(免责声明,我是其贡献者之一)来管理很多东西。例如:

  • 使用快照回滚整个存储库,无论何种类型。例如,如果我完全搞砸了一个git树,我可以用cp -dpfR ./@123456789 ./来代替我的工作回购文件,就像它们在123456789纪元一样。
  • 使用版本控制/快照作为自己的不可变VCS,非常适合/ etc和其他东西。由于无法删除或修改过去的文件,因此每个快照都是单个文件或整个树的不可变修订版。

通常,我使用Git或Mercurial而不是Subversion,因为我更喜欢分布式VCS,但我现在坚持将我的存储库保存在本地版本FS上。

对于Windows用户,我相信在python中有一些完全相同的可移植实现...但不是很确定。

答案 1 :(得分:3)

如前所述,您尝试将SVN用于应该使用像git或Mercurial这样的DVCS的东西。

每个人都可以拥有自己的存储库,然后将其与mais central repo(如SVN repo)同步。

这实际上就是我在自己的项目中使用的。

我唯一没有得到的是为什么你需要锁。文件不必是只读的。您可能正在考虑这种方式,因为SVN的合并方式(您几乎总是需要手动完成)。 Git真的很神奇[1]并且大多数合并没有人为干预。

[1]好吧,这不是魔术。虽然SVN关心文件,但Git关心代码块。这样它就可以合并一个同时更改两次的文件,只要你不改变完全相同的代码块。

答案 2 :(得分:2)

像Git,Mercurial或Bazaar这样的现代分布式版本控制系统是这种情况下的最佳工具。不是因为分布式方面(这在这里显然不重要),而是因为在现场创建存储库非常容易。

在Mercurial中你只需要这样做:

cd ~/directory
hg init

与Git类似:

cd ~/directory
git init
git add .

每个工作副本都是一个完整的存储库,如果您愿意,可以将其作为备份推送到远程服务器。此外,所有存储库数据都存储在一个隐藏目录中,因此您可以避免在该位置周围有大量.svn目录的问题。

我使用Mercurial来管理我的服务器上的/etc,我发现它非常方便。有一点需要注意,它不会将您的文件标记为只读(如RCS),但我认为这是一个优势。

答案 3 :(得分:0)

您需要意识到SVN存储库是免费的。您可以根据需要创建任意数量的内容。

您还需要意识到您不必检查整个存储库。你说:

  

这似乎也不合理   有一个存储库的工作副本   哪里有文件放在哪里   SVN控制

我不确定你真正想做什么,但我的印象是你以一种特殊的方式使用SVN。