坚果云+代码管理工具有效管理代码(开发者必读)

代码管理对开发者而言是一项非常重要的工作,而不同开发者管理自己代码的方式却千差万别。FTP、SVN、GitHub(隐私版需付费)、U盘拷贝等都是被广泛使用的代码管理工具。

最近,随着个人云存储的普及,我们很高兴的发现越来越多的开发者开始使用坚果云管理自己的代码(相比其他管理工具,坚果云隐私性更强,而且免费),希望通过坚果云的易用性提高工作效率(自动同步、无需拷贝或提交)。

在经过一段时间的运营,我们有幸收到了很多程序开发者的主动反馈。我们在这里将他们的使用经验加以总结和整理,以便其他开发者参考,提高工作效率。

个人开发者通常会有以下需求:

  • 备份代码
  • 无论在公司、家里、学校、宿舍,都可随时访问最新代码
  • 版本管理,随时找到旧的代码

直观上看,坚果云(拥有备份、多设备间同步、历史版本等功能)非常适合于代码管理。于是不少开发者用户,直接将自己的代码放在坚果云同步文件夹中,每次修改自动同步。但这样做有几个问题:

  • 坚果云的版本历史是自动保存的,不能添加版本信息。对于代码而言,不方便找回和比对历史代码。
  • 专业的代码管理工具(Git/Hg)能够很容易查看用户对所有代码进行的每次修改,易于分析bug的来源。而坚果云不能提供这样的功能。
  • 如果将eclipse, Visual Studio等IDE的workspace直接放于坚果云中,假如同步不及时造成冲突,而IDE自动生成文件的冲突无法解决,可能导致IDE无法正常打开。
  • 编译、重构等自动化工作引发的同步,容易导致大量的带宽占用。

在与开发者沟通后,我们得到了一个可行方案。原理是将当今最流行的代码管理工具与坚果云结合,把当前的开发空间(workspace)放在坚果云外面,把每次提交的代码放在坚果云里面。这样可完全保留代码管理工具的长处,同时享有坚果云提供的自动同步、共享、备份功能。也就是说,你可以轻而易举的拥有一个完全免费、安全、隐私、可用手机、平板访问的代码管理服务器。

目前相对流行的代码管理工具有两个:Git和Mercurial(Hg),我们分开说明(假设我们的开发平台是Linux/Mac,正在开发的项目叫做project,放在“~/project”;坚果云同步文件夹叫Nutstore,放在“~/Nutstore”):

Git篇:

首先,我们将项目文件夹初始化为Git的Repository

~/project $>git init

~/project $> git add .

~/project $> git commit -m “first commit”

然后,在坚果云中再创建一个Repository,专门用来存放最终提交的代码(相当于这个Repository就是你的私有GitHub服务器)

~/project $> mkdir -p ~/Nutstore/git/project

~/project $> cd ~/Nutstore/git/project

~/Nutstore/git/project $> git init –bare

最后,我们再设置一下外面的工作空间,让它每当push时,就将代码提交到坚果云中的Repository中。但请注意哦,代码提交后一定别急着关机,给坚果云一些同步的时间,等坚果云同步完成后(任务栏坚果图标打了对勾)再关机。

~/Nutstore/git/project $> cd ~/project

~/project $> git remote add orig ~/Nutstore/git/project

平时,你可以在~/project中开发代码,每次修改代码只需commit,然后将代码push到~/Nutstore/git/project即可享受到git+坚果云的所有好处。如下:

~/project $> git push orig master

如果你有多个电脑。只需在新电脑上安装坚果云,将其中的Repository同步下来,然后将其clone到坚果云外面即可。新clone的Repository会在push时,自动把代码提交到坚果云中。但请注意,该方法不适合多个人同时提交代码,否则可能出现冲突。建议用于一个人的多个设备间,而不是多个人。

你也可以在~/Nutstore/git/project下定期运行GC(垃圾回收),减少文件数目和节约空间,如下:

~/Nutstore/git/project> git gc

 

Mercurial(Hg)篇:

首先,我们将项目文件夹初始化为Hg的Repository

~/project $> hg init

~/project $> hg add

~/project $> hg commit -m “first commit”

然后,在坚果云中再创建一个Repository,专门用来存放最终提交的代码(相当于这个Repository就是你的私有GitHub服务器)

~/project $> mkdir -p ~/Nutstore/hg/project

~/project $> cd ~/Nutstore/hg/project

~/Nutstore/hg/project $> hg init

最后,我们再设置一下外面的工作空间,让它每当push时,就将代码提交到坚果云中的Repository中。但请注意哦,代码提交后一定别急着关机,给坚果云一些同步的时间,等坚果云同步完成后(任务栏坚果图标打了对勾)再关机。

~/Nutstore/hg/project $> cd ~/project

~/project $> echo “[paths]\ndefault = ~/Nutstore/hg/project\n” > .hg/hgrc

平时,你可以在~/project中开发代码,每次修改代码只需commit,然后将代码push到~/Nutstore/git/project即可享受到hg+坚果云的所有好处。如下:

~/project $>hg push

如果你有多个电脑。只需在新电脑上安装坚果云,将其中的Repository同步下来,然后将其clone到坚果云外面即可。新clone的Repository会在push时,自动把代码提交到坚果云中。但请注意,该方法不适合多个人同时提交代码,否则可能出现冲突。建议用于一个人的多个设备间,而不是多个人。

 

最后:

如果你想了解git和hg的用法,下面是很好的入门材料:

git:http://book.git-scm.com/

hg:http://hginit.com/

 

此条目发表在 使用技巧 分类目录。将固定链接加入收藏夹。

坚果云+代码管理工具有效管理代码(开发者必读)》有 7 条评论

  1. 匿名 说:

    能够在如此精彩的帖子后面留下自己的网名是多么骄傲的一件事啊!

  2. lava 说:

    只适合单人,多人还是要老实的自己开个服务器,也许可以用云存储备份服务器上的文件。

  3. Armstrong 说:

    这种方法也适用其他网盘类存储工具,但坚果云的版本控制在这里就变成了鸡肋;同时因为不是专门的版本控制用途,其消耗的带宽比专门的工具要大。

  4. 匿名 说:

    怎么把一个坚果云中的项目clone出来呢。坚果云里面的项目是bare的啊

  5. Pingback 引用通告: 坚果云+代码管理工具有效管理代码(开发者必读) | DrWang86's Wiki & More

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>