在家工作时,您使用什么策略来同步代码

时间:2009-01-12 05:58:58

标签: version-control synchronization

在我的工作我目前在虚拟机中有我的开发环境。当我需要在家工作时,我将我的VM和我需要的任何数据库复制到笔记本电脑驱动器大小的外部USB驱动器上。复制大约10分钟后,我将驱动器放入口袋并回家,将VM和数据库复制到我的个人计算机上,我已准备好工作了。我按照相同的步骤将工作带回来。

所以如果我计算等待文件完成复制所花费的总时间,以便让我把工作带回家再把它带回来,那么大约需要40分钟!我我家的工作有VPN连接(两个网站都提供互联网)和一个体面的互联网速度(8mbits down /?up)但我发现远程桌面进入我的工作机器已经足够让我想要工作我的VM直接。

因此,在查看我有哪些其他选项或如何改进现有选项时我对您使用或建议在家工作并保持代码/环境同步的策略感兴趣。

编辑:我更喜欢一个选项,我不必在离开工作之前将更改提交到版本控制中 - 因为我喜欢在我的提交中做出有意义的描述性注释,提交需要的时间比复制我的VM要长放到便携式驱动器上!大声笑我也更喜欢一个解决方案,我的开发环境也保持同步。话虽如此,我仍然对你自己的解决方案很感兴趣,即使他们没有按照我的意愿完全解决我的问题。 :)

23 个答案:

答案 0 :(得分:16)

分布式/分散式版本控制系统解决方案将满足您的需求,Git,Bazaar,Mercurial,darcs ......您有很多其他选择。

答案 1 :(得分:9)

使用SVN,SourceOffSite等版本控制软件。您只需签入所有更改并在想要同步时获取最新更改。

或者您可以使用Windows Live Sync - > https://sync.live.com/foldersharetolivesync.aspx

答案 2 :(得分:5)

有没有人推荐rsync?使用rsync客户端在文件之间发送差异。您可以应用这些差异,从而使您的文件保持最新。对于最小的文件传输,它可能是最好的主意。

答案 3 :(得分:3)

我只是使用外置便携式笔记本电脑驱动器并完成所有工作。我的所有电脑都设置为相同的驱动器号。所以没有复制任何东西..但是,我并没有尝试以这种方式运行虚拟机,但我认为没有任何理由它不应该简单地工作。

答案 4 :(得分:3)

我使用dropbox。

答案 5 :(得分:2)

我们使用Citrix,然后在工作时与我的PC进行远程桌面连接。它不是世界上最快的解决方案,但确实消除了使两个或更多工作站保持最新的问题。

答案 6 :(得分:2)

这是我使用的解决方案。

  1. 在办公室网络和笔记本电脑之间设置VPN。
  2. 安装VisualSVN服务器
  3. 加载SCC中的所有项目。
  4. 在办公室时,我检查一个项目,对其进行操作然后检查。当我在家或在世界各地通过VPN连接到办公室时,检查我的项目,做我的事情,然后检查它。通过VPN连接,我也可以RDP到我的开发盒和/或服务器。

    希望这会有所帮助。祝你好运!

答案 7 :(得分:1)

我要么远程连接到办公室SVN,要么连接到VPN和远程桌面我的开发人员或台式机并继续工作。我很少同步任何文件,但是当我这样做时,通常使用DropBox(尽管你不能用大文件做到这一点)。

答案 8 :(得分:1)

编写程序,通过互联网同步所有数据,然后关闭计算机,所以在一天结束时启动它,然后回家,当你回家时,所有数据都已存在

答案 9 :(得分:1)

我们与分布式团队合作,因此每个人都可以轻松安全地访问代码存储库。为此,我们使用SVN而不是ssl / https。它工作得很好,可靠和安全。

答案 10 :(得分:1)

只需在家中设置SVN服务器,转发路由器端口,继续生活。 rsync也是一个很好的,快速的解决方案。只记得通过SSH使用它。

答案 11 :(得分:0)

为什么不直接使用版本控制?一个DVCS? 在这里找到有关Windows用户的DVCS教程(非常简单) http://codicesoftware.blogspot.com/2010/03/distributed-development-for-windows.html

答案 12 :(得分:0)

我有一个带有我所有开发软件的macbook;当我去上班时,我以目标火线模式启动它并将其插入我的工作macpro与快速处理器,局域网连接,大显示器等。这样我永远不必离开我的用户文件夹但我可以访问所有的工作中可用的软件和硬件。

答案 13 :(得分:0)

Dropbox和微软的Live Sync是已经提到的好选择。我个人最喜欢的是Live Mesh,也来自微软。在我看来,将其置于另外两个之上的一个重要功能是能够指定哪些文件夹在哪些计算机上以及文件夹所在的位置进行同步。因此,例如,我在我的工作机器和我家的开发盒之间同步我的Visual Studio 2005 / Projects文件夹,并在我的侧面gig VM和我的家庭开发盒之间同步Visual Studio 2008 / Projects。

答案 14 :(得分:0)

我有一个设置,其中一台计算机上的文件夹同步到另一台计算机上的文件夹。一台机器上内容的任何更改也会在一分钟内在另一台机器上进行。 因此,您可以同步工作文件的顶级文件夹,然后同步到您的家庭计算机。我喜欢这个是同步是完全透明的。就用户体验而言,我只是使用文件系统。没有外部应用程序可以与之互动。

我使用Microsoft的Live Sync Live Sync。您需要创建Windows Live ID才能使用此系统。它适用于Windows和Mac。

答案 15 :(得分:0)

这也是我的问题。所以,公司给我买了一台笔记本电脑,我在家里或其他地方做我的工作。

答案 16 :(得分:0)

我也使用DropBox,这很关键,因为保持简单非常重要。

如果您可以拥有某种类型的远程桌面功能通常会更好,因为这将允许您使用标准工作站配置,并且它将允许与网络资源(数据库服务器,业务服务器,如工作流等)的一致连接)。

在我看来,脱机工作对于某些任务是可以的,但总体而言,连接到其他资源的系统存在障碍(除非您计划将这些资源移动到您的家庭盒中)。

答案 17 :(得分:0)

根据您使用的VM软件,为什么不设置2个不同的VM磁盘,请将您的用户配置文件/ dev文件保存在一个磁盘上,将OS和其他程序更改为另一个。

通过这种方式,您可能只需要在安装新内容时复制较大的磁盘映像,最终只复制包含您工作的单个虚拟磁盘。

答案 18 :(得分:0)

如果您需要的只是工作计算机上的虚拟机,那么您可以安装远程目录(使用nfs或smb)存储虚拟机文件的位置并从那里运行该虚拟机。这应该比使用远程桌面更快。

答案 19 :(得分:0)

我想大部分时间花在复制上都涉及数据库。是对的吗?如果是这样,您是否可以使用VPN连接从家中连接到工作数据库?

您仍然会复制源文件(或使用其他人建议的源代码控制系统),但这只需要一小部分时间。

答案 20 :(得分:0)

我连接办公室网络并从svn下载最新版本 使用Dev mysql服务器 所以我就像办公室网络中的另一台计算机

答案 21 :(得分:0)

您尚未指定操作系统和虚拟化系统,但如果您正在处理可安装的VM映像,例如在Linux上使用XEN,然后你可以挂载映像并通过rsync同步它。

答案 22 :(得分:0)

我有类似的问题。但幸运的是,我们配置了源控制服务器(TFS),因此我只能使用存储在外部驱动器上的本地虚拟机,而不是在需要时将所需文件签入TFS。