我需要在一周内从两台计算机上编写代码。同步两台计算机(mac)的最佳方法是什么?我已经开始使用源代码管理,例如 SVN。它工作得很好,除了有时我签入我想要同步但它们不编译的代码,并且它会干扰团队中从事同一项目的其他人。
我不想使用分支。当我从办公室回家时,每晚都进行分支是没有意义的。
我需要在一周内从两台计算机上编写代码。同步两台计算机(mac)的最佳方法是什么?我已经开始使用源代码管理,例如 SVN。它工作得很好,除了有时我签入我想要同步但它们不编译的代码,并且它会干扰团队中从事同一项目的其他人。
我不想使用分支。当我从办公室回家时,每晚都进行分支是没有意义的。
您可以将代码签入分支而不是主干。然后,您可以获得版本控制的所有好处,而不会因您的编译错误而打扰其他人。
这里有关于如何在 subversion 中分支的描述。
使用 Microsoft Foldershare(现在称为 Live Sync)之类的东西。它是免费的,并且在 Mac 上运行良好。
不要为此使用源代码控制。在我的 Mac 上,我过去曾使用过 Microsoft 的 FolderShare,而且效果非常好。每当我保存文件时,更改都会在 2-3 秒内传播到所有同步的机器。唯一需要注意的是没有云,所以两台(或至少一台永久)机器必须同时在线。FolderShare 不适用于大型 MP3 库,但它适用于代码树。
使用 git。您拥有版本控制系统的所有优势,但可以在本地工作。如果您的项目代码已经在 SVN 中,则可以使用 git-svn 使 git 和 svn 协作。这是一个易于遵循的 git-svn 示例指南。
使用 git 很容易进行分支,因此您需要经常进行分支。Git 分支与 SVN 分支不同:它们存储在本地,而不是像在 SVN 中那样简单地复制整个项目。最后,在两台计算机上设置 Dropbox,以便您的更改自动同步。
所以你的工作流程可能是这样的:
git-svn clone http://mysvnrepo local_dir
获取您的本地存储库git checkout -b my_new_branch
当您想开发新功能时git merge my_new_branch
git-svn rebase
使用 git-svn dcommit 更新您的本地存储库,然后提交你试过Dropbox吗?它基本上设置了一个文件夹,该文件夹将跨多台运行该应用程序的 PC 并保存文件的版本,但是我在编程环境中从未厌倦它
使用mercurial (hg)或 git,您不需要版本控制服务器。您可以通过 USB 密钥、每封邮件发送的捆绑包或临时启动的服务器(“hg serve”)进行同步。这样,其他人就不会知道任何版本控制服务器,并且您不会干扰您的团队成员。hg 和 git 都可以与 subversion 交互(不过我不知道他们做得如何)。
我想很多人都把这件事复杂化了。解决方案很明显。只需使用便携式 USB 设备并将结帐目录放在那里。对于您给定的场景,这将很有意义。
在将代码提交给 SVN 之前,您应该始终确保代码符合要求。在提交之前,您应该进行更新并执行任何必要的合并。在我知道的一些团队中,提交无法遵守的代码会被罚款。
使用Fuse 和 sshfs将工作机器上的相关目录挂载到家里的机器上。
尝试在您的 svn 存储库中使用分支。或者,如果您订阅了 MobileMe,则可以使用 iDisk。
如果您不想干扰需要由其他开发人员编译的代码,那么您应该遵守一些简单的规则。
我喜欢 Microsoft Live Mesh,它易于使用,您只需选择要同步的文件夹即可。
有效的作弊解决方案:
我的首选:简单的电子邮件,我只是经常 .zip 一个文件夹并通过电子邮件发送给自己。如果我的电脑死机,没问题,因为我也为 POP3 帐户使用“将邮件留在服务器上”。因此,我将备份和版本控制在一起。
使用闪存驱动器。从闪存驱动器工作并备份到硬盘,反之亦然。
上述两种方法对于使用多台计算机的单个开发人员非常有效。
编辑:哎呀,对不起,错过了团队方面。电子邮件解决方案仍然有效,但最好使用团队源代码控制,因为多个人正在修改相同的代码。我发现TFS和 Visual Source Safe并不是完美的解决方案。源代码控制系统的问题在于掌握它们的学习曲线。不幸的是,在团队环境中,这是一项必要的任务。