指定存储版本控制存储库的位置

时间:2015-08-19 18:51:12

标签: git svn version-control mercurial tortoisehg

我想将VC用于开发项目,但是我在各种类型中看到的内容(Git,SVN,Mercurial ......)似乎并不适合我喜欢的内容。完成。

我想要做的是将代码存储库存储在外部设备(例如拇指驱动器或SD卡)上,不仅用于版本控制,还用作备份以防本地硬盘崩溃

在阅读了各种VC软件包的一些教程后,我很难理解如何实现。我看到的大部分内容都是必须在项目目录结构的根目录中初始化存储库,而不是我想要存储的存储库。

在我看来,这会产生重复的代码......
或者我只是遗漏了什么? 这可以实现吗?

非常感谢任何理解这一点的帮助!

3 个答案:

答案 0 :(得分:1)

  

在我看来,这会产生重复的代码......

没有。通常,存储库不是“代码的副本” - 它的数据库,其中包含您的代码和其他元数据。我看到没什么不好在不同的地方有两个存储库

以上注释仅适用于DVCS(Mercurial,Git,Bazaar ......),不适用于Subversion等CVCS,其中所有存储库和任何存储库都是远程存储器,而.svn dir只包含一些元数据(因此 - 您可以在外部驱动器上有单个 SVN-repo)

结论:

  • 如果是Mercurial,您无法将本地存储库(.hg)移到Working Dir的根目录(在您的术语中为“project”),但可以在外部驱动器上有其他存储库
  • 如果是Git,除了VonC回答之外,你可以use --separate-git-dir option for git init
  • 如果是SVN,您必须在其他任何位置将工作副本外的存储库

答案 1 :(得分:1)

另一方面,您似乎混淆了存储库的概念和不同目的,另一方面又备份了备份。

存储库主要不是为了保留备份。其主要目的是修订控制和源的历史。我知道的版本控制系统通常保留其历史数据相对于项目本身的根目录 - 也许它可以配置为其他方式,但默认情况下通常是有正当理由的默认值。但是,您可以轻松克隆此类存储库,以便在另一个驱动器或计算机上存在完整历史记录的另一个副本(或者也可选择仅部分历史记录)。这种机制可以作为备份使用。

备份通常是您的数据(可能是您的存储库)的另一个副本,位于另一个独立的介质上,优先是在另一个建筑物中。这样可以恢复(重要)数据的完整状态 - 通常用于工作场所计算机包括存储库以及存储库的工作目录状态。

答案 2 :(得分:0)

由于Git是分散的,你可以拥有:

  • 您的磁盘上的本地仓库
  • 在您的拇指驱动器上
  • bare repo ,您要将资源推送到备份

那是:

cd /path/to/myproject
git init .
git add -A .
git commit -m "my sources"

然后

cd /path/to/thumdrive
git init --bare myproject.git

最后

cd /path/to/myproject
git remote add origin /path/to/thumbive/myproject.git
git push -u origin master
相关问题