你如何组织你的编程工作

时间:2011-01-12 13:31:02

标签: git

我是该领域的新手,但在不久的将来,我必须为朋友开发一个应用程序(我已经完成了应用程序的一些工作,而且朋友很高兴。)

我认为我需要3个地方来存储我的作品,但我不确定这是否是最佳方法。我需要你关于这个主题的建议,意见,链接,书籍和博客。

我计划:

  1. 我开发应用程序的地方
  2. 我保留应用程序备份的地方
  3. 准备好使用该应用程序的地方
  4. 我将在开发阶段使用git,但对于后者我不知道使用什么工具,或者哪些是好的做法。你能给我一个建议吗?

    PS:此时我正在使用cakephp构建一些webapps,但我也不时使用C ++。

9 个答案:

答案 0 :(得分:9)

  

1:我开发应用程序的地方

这将是你当地的git checkout。

  

2:我保留应用程序备份的地方

您的意思是来源或任何编译结果?对于你可以

的来源
  1. 使用http://github.comhttp://gitorious.org等公共服务作为备份系统。如果您不介意使用不受您控制的服务,我建议您这样做。
  2. 设置一个自己的git服务器(安装了sshd和git的linux盒就足够了)。您需要注意,在设置远程存储库时存在一些缺陷(存储库应该是裸存储的,并且当有多个unix用户应该能够进入存储库时,您需要设置权限)
  3. 无论哪种方式,您git push提交到远程存储库以备份您的工作。

      

    3:准备好使用该应用程序的地方

    编译结果的存储没有明确的标准。典型的结果与文件共享/ Web服务器上的定义编号方案一起存储。

      

    我将在开发阶段使用git,但对于后者我不知道使用什么工具,或者哪些是好的做法。你能给我一个建议吗?

    正如@Navi所说,自动构建工具是一大优点。最佳做法是使用单命令构建,这意味着您需要在结账后运行完全一个命令来构建完整的软件。

    您还应该考虑continous integration系统,这是一个监控中央源代码存储库以进行更改的软件,并在检测到新内容时在洁净室环境中自动构建软件。如果有许多(> 1)人在使用软件产品,CI系统尤其方便,因为他们可以非常快速地显示损坏的构建。

答案 1 :(得分:8)

通常的做法是开发,测试,集成测试和生产环境。集成测试和生产将或多或少相同。

我建议你也使用某种构建工具。从您的问题中不清楚您使用的是哪种平台/技术,但可能有适合您的平台/技术。

如果您使用Maven,那么惯例就是区分稳定版本和快照实验版本。

答案 2 :(得分:5)

已经给出了最好的建议:

  • 使用源代码管理/修订控制。和备份。真的,真的这样做。
  • 具有用于开发,测试,集成/分段和生产的单独实例。如果您缺少硬件,虚拟化 - 有一些很好的商业解决方案,但即使Virtualbox(免费)也会经常做这项工作。

此外,我还建议

  • 在里程碑处备份稳定实例。 工作时,请保留副本。
  • 使用JIRABugzilla或类似的问题跟踪器。至少,有一个带有ToDo列表和好grep的文本文件。
  • 在适当的地方在代码中放置标记,如@ TODO和@FIXME;我所知道的大多数IDE都会自动找到这些IDE,并为您提供这些IDE的列表。这可能会或可能不会与跟踪器集成。

我发现跟踪剩下的事情和重要性是很重要的,区分错误,改进,必要的任务和好的项目等等。很容易迷失在开发中并忘记了一些东西 - 编程需要你深入研究代码的内部工作,并牢记整体结构。你需要一些东西来保持你的思想免受所有这些“我必须这样做”的事情。粘黄色的纸不能很好地工作,书写垫也不行,因为纸张超过50个,纸张很难跟踪。

有软件。使用它。

答案 3 :(得分:3)

这是高效率的最佳实践,但对于新手来说却是直截了当的。

  1. 设置本地开发环境。使用像TortoiseSVN这样的VCS,或者理想地使用与IDE完全集成的东西。我使用Aptana和Subclipse开发PHP应用程序。

  2. 设置夜间脚本以远程自动备份VCS。

  3. 获取远程开发环境设置(即dev.mysite.com)。用于实时服务器测试,客户端校对,UI反馈测试等。

  4. 如果需要,请设置登台服务器(stage.mysite.com)。用于实时集成测试,反馈测试等。如果你的项目足够小,你通常可以跳过这个阶段,只需使用dev环境进行集成测试。

  5. 设置生产环境(www.mysite.com)

  6. 不要过度设计您的工作流程......您的时间非常宝贵。现在,我想说从这开始,获得一些经验,然后你就会知道如何改进你的工作流程。

答案 4 :(得分:2)

我发现一组最小的代码是开发和发布。某种版本控制至关重要。我使用HEAD进行开发,并在发布时进行分支。备份您的存储库,或至少将其放在与用于开发和构建的磁盘不同的磁盘上。

我更喜欢有三组代码:开发,测试和发布。每个都应该有一个自动构建环境。这些是构建环境。对于开发,只需要一组。

  • 发布代码用于更改在下一版本之前应用的已发布代码。这里完成的任何更改要么合并回开发。或重新开发(如果是快速修复)。
  • 测试代码是测试版本。这为测试人员提供了相对稳定的环境。构建通常被标记,但不分支。该标记用作发布分支的基础。
  • 开发应至少每天自动构建。这可以确保代码可以在开发环境之外构建。

您可以使用GIT进行开发和制作,但工作流程与使用CVS或颠覆时的工作流程不同。请查看the ProGIT online book以了解流程。

避免在环境中编写应用程序。任何环境依赖性都应来自环境的配置。很高兴在界面中显示构建和环境的一些指示。

答案 5 :(得分:1)

单个开发人员的快速而繁琐的工作流程,他们不使用任何版本控制sw:

  • 实际制作:用户版本的确切副本,
  • 发布:现成版本(应该部署,但还没有完成),
  • 工作版:您正在处理的工作
  • 备份:备份版本应处于工作状态。

如果您正在使用数据库,则每个程序版本都会有一个数据库版本。

答案 6 :(得分:1)

将代码存储在http://www.github.com上。如果您需要私有代码,您可以象征性的费用创建一个托管的私有存储库,这将满足您的前两个要求。

如果您希望存储代码并托管网站,那么有一家名为PHP Fog(http://www.phpfog.com/)的云服务公司将托管代码并准备好使用它(要求3)。

答案 7 :(得分:1)

  1. 外部版本控制(github,bitbucket)
  2. EG。 rsync到Dropbox文件夹
  3. 应该从步骤1中控制的某个工具版本以编程方式生成生产资料

答案 8 :(得分:1)

很多人都在谈论为您的工作设置问题/功能跟踪器。如果只是你正在做的工作,我建议你看看FreeMind

心灵映射是跟踪您需要为项目执行的任务和事情的绝佳方式。写下你想要保留的任何想法,但你现在没有时间做。

编辑:我为我的开源项目中的扩展添加了一个示例:

Mind Map example