在笔记本电脑和台式机上的ubuntu VM中编码

时间:2012-01-11 17:26:18

标签: virtual-machine vmware development-environment rsync

在VM和中央SVN存储库之间管理代码的最佳方法是什么?

更具体地说,我有一个带有Linux VM环境的桌面,以及一个带有Linux VM环境的笔记本电脑。两者都在VMWare工作站下运行。我一直在台式机和笔记本电脑之间来回切换,但无法使台式机和笔记本电脑保持同步。

最明显 - 但可能效率最低 - 的选择是在切换机器之前提交所有内容。但是,这会导致提交部分完成的代码,因此我可以在不同的机器上工作。

我考虑使用类似rsync的东西来保持我的两个开发环境同步。我认为这会更好,因为我可以在我想要的时候对svn进行更改,同时保持桌面和笔记本电脑同步。

因此,虽然我很想走rsync路线,但我仍然担心我必须主动同步。在我的情况下,我想象的是我在桌面上工作的情况,然后去咖啡馆和我的笔记本电脑一起工作,只是意识到我在离开家之前没有同步( DOH!)。

我不知道是否真的有办法解决这个问题。也许我可以将所有内容同步到一个始终在线的中央服务器上?并设置cron作业,每隔几分钟运行一次,或者与我的各种开发环境同步?

有更好的选择吗?

2 个答案:

答案 0 :(得分:0)

您可以考虑使用分布式版本控制。如果你没有能力更改中央服务器,那么仍然有像git-svn这样的包装器允许你在与Subversion服务器交互的同时使用git。

DVCS设置中的工作流程:

  1. 在机器#1上进行更改,在本地提交,重复。
  2. 在切换时,在本地提交。
  3. 将变更集从机器#1拉到或推入机器#2
  4. 继续在#2机器上工作。
  5. 在切换时,在本地提交。
  6. 将变更集从机器#2拉出或推送到机器#1
  7. 重复
  8. 当实际推送到服务器的时候,无论你使用哪台计算机都应该拥有最新的代码,你可以推送到主服务器(SVN或其他)。

    这确实会让你进行中间变更 - 但我发现使用DVCS比使用DVCS更有利。

    另一种方法可能是将整个dev目录保存在Dropbox文件夹或某些等效文件夹中。然后你不必自己处理rsync或任何事情,但你对同步的控制较少。

答案 1 :(得分:0)

syncd可能就是您要找的内容:https://github.com/drunomics/syncd。它使用inotify和rsync来侦听文件系统更改rsync更改的文件到远程服务器。

这是一种单向同步,因此当您停止在一台机器上工作并在另一台机器上启动它时,您将不得不停止它。您还需要在两台计算机上运行ssh服务器。