我对我希望我的版本控制系统如何运行有这个想法,我想我会把这个想法扔掉,看看是否有人知道任何现有的方法来实现这一点。我喜欢 mercurial,所以这就是我针对这个问题的目标,但我很乐意听到其他可以实现这一点的软件。
好的,所以问题。作为一名研究人员,我想对许多不同的东西进行版本化。这可以是代码(小型脚本或大型应用程序)、手稿、数据、课程作业等。我不想将所有这些都存储在一个大型存储库中,因为
- 我希望“hg log”只显示与当前项目相关的内容
- 我可能想在其他地方发布代码并保留历史记录。
- 就是感觉不对。。。
所以我目前正在实施的想法是在中央服务器上拥有一个包含不同存储库的目录层次结构。像这样的东西(只有标记为 hg repo 的东西是存储库,其他都是标准文件系统目录):
-- ~/hgrepo/
-- Projects/
-- Project 1 (hg repo)
-- Project 2 (hg repo)
-- Code
-- MyCoolApplication
-- MyAppSource (hg repo)
-- SomeExternalPatchedLib (hg repo)
-- CodeProject 1 (hg repo)
现在,这很好用,因为我可以破解某些东西,hg clone ssh://my.university.server.com/hgrepo/Code/CodeSample1
然后编辑 .hg/hgrc 并更改服务器的默认路径。但这有点麻烦。
我想要的是有一个扩展,让我
- 列出存储库,例如
hg repo ls Code/
在 Code/ 下面显示级别 - 使用上面的简单路径克隆(跳过繁琐的 ssh:// 和服务器主机名等)
- 将本地存储库发布到远程存储库(即克隆它并更改默认路径,同时处理错误)
基本上,我认为它类似于私有的、自托管的 bitbucket/github。有人知道类似的系统吗?
我只能通过 SSH 访问文件服务器,因此无法在主机上运行任何服务器应用程序。但是我很高兴听到也需要一个系统的系统,因为如果软件足够好,我也许可以改变它:)