如果出于安全原因,源代码只能存储在我的家用计算机和办公室计算机上,如果传输代码的唯一方法是USB密钥,哪种源控制最好?
SVN或GIT?
注意:两台计算机之间没有网络连接。
答案 0 :(得分:10)
我推荐git。
无论哪种方式,您都需要USB密钥上的规范存储库。在git中你可以这样做:
在USB密钥上做一个“裸”回购:
$ mkdir /path/to/usbkey/myapp.git
$ cd /path/to/usbkey/myapp.git/
$ git init --bare
Initialized empty Git repository in /path/to/usbkey/myapp.git/
裸存储库目录通常被命名为“something.git” - 您可以随意命名它们,但“.git”约定被广泛使用。
现在你可以克隆回购:
$ cd /my/source/dir/
$ git clone /path/to/usbkey/myapp.git
Initialized empty Git repository in /my/source/dir/myapp/.git/
warning: You appear to have cloned an empty repository.
它会警告你回购是空的。我们在其中加入一些东西:
$ cd myapp
$ echo "some stuff." > README
$ git add README
$ git commit -m 'added a README'
[master (root-commit) 155b8ea] added a README
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README
然后将其推送到USB密钥:
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 231 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /path/to/usbkey/myapp.git
* [new branch] master -> master
当您到达另一台计算机时,只需再次从USB密钥克隆回购。您必须确保记得推送您的更改,但是您知道您将始终拥有备份,因为每当您同步时,您将拥有三份完整的回购副本。
使用git执行此操作的另一种方法是只有一个repo - USB密钥上的一个repo。您永远不必记得推送它,但除非您使用其他显式备份系统,否则您的代码将只在密钥上。那会很糟糕。
如果您在USB密钥上使用SVN,您仍然需要记住提交并以相同的方式提取您的更改有一个简单的git仓库,但是你不会得到这样做的免费自动备份git给你。你也会错过git的所有其他细节,但这是另一个讨论。请参阅Why Git is Better Than X。
答案 1 :(得分:4)
任何一个都可以工作。如果你使用的是SVN,你可以用USB密钥完成工作。使用Git,您可以将密钥克隆到密钥上,只需在准备好将数据移动到办公室时按下密钥即可。
答案 2 :(得分:4)
使用Git,除了在USB上使用裸git存储库进行传输(如在Neall和dj2答案中),您还可以使用“ git bundle “离线转移命令。
答案 3 :(得分:0)
Easy,GIT或其他一些DVCS - 不是因为DVCS本质上比subverion更好,而是因为DVCS可以更好地匹配您的需求,以及它允许您工作的方式。
在网络连接的绝对中,您无法从“服务器”存储库运行/访问SVN,这种情况会失败,而使用DVCS,您可以使用USB密钥上的克隆存储库作为两个开发环境之间的桥梁。
答案 4 :(得分:0)
正如Dj2所说,两者都可以发挥作用,但Git显然是出于此目的的最佳选择。 无论如何,我发现在这样一个“侧面特征”上做出如此重要的选择有点奇怪......