经过多次延迟,我意识到我想在我的Web开发工作流程中实现版本控制系统。我很少和其他人一起工作,所以我需要的是版本控制,以便安心和回滚等。我也从工作室的笔记本电脑和桌面开发,所以我想使用版本控制,所以我可以在不同的位置工作并避免因此而产生的冲突。
我做了一些研究,大多数教程都相当先进,似乎超出了我的需要。基本上,我决定使用beanstalk和Versions.app的SVN存储库来处理它。
然而,在真正深入研究解决方案之前,我有三个简单的问题需要回答:
是否真的有必要使用典型的SVN结构(主干/分支/标签)?我不能简单地将repo用作web-root吗?
我如何从分支机构中受益? Beanstalk建议从分支机构部署。据我所知,这可能意味着创建一个Production分支,然后在部署之前从Trunk合并到该分支?有没有理由不简单地从Trunk部署或只是在SVN中部署webroot并部署它?我想我主要是问为什么作为一个开发者,我想在开发网站时使用分支机构?
我有什么理由可以从GIT中受益吗?我可以看到离线提交的一个主要功能,但是beanstalk甚至推荐SVN用于Web开发文件(html,php,图像等)。
任何帮助非常感谢。我一直想要使用版本控制系统并在一段时间内离线开发。希望不再为我编辑实时服务器!我认为开始正确的工作流程是一个时间和能源密集型项目,但最终还是值得的。
-
编辑:我正在开发大多数wordpress网站,各种EE项目规模相当小,没有太强烈。
-
编辑与所有内容一样,使用系统并尝试使用它是真正了解它的唯一方法。最后,我选择了git。我很高兴能够快速离线,快速分支和合并等等。然后,使用capistrano进行部署,虽然最初设置很复杂,但令人难以置信。我的工作流程现在得到了极大的改善。我可以快速分支新功能并尝试新想法。如果没有git,我将永远不会再开发一个项目!
答案 0 :(得分:2)
我建议遵循标准结构。如果你以后带上其他开发人员,他们熟悉标准结构,那就容易多了。
即使您独自一人,使用标签版本也非常有用。假设你将一个版本推向生产并且它很拙劣。如果你总是从主干做事,那么你必须查看日期或变更集才能回滚。如果您标记了以前的版本,那么您只需获取标记并推送标记,而不必担心更改结束的位置和另一个更改的开始。
创建一个标签是微不足道的,你从中获得的价值是巨大的。
我参与了一个只有2个开发人员18个月的项目,我们还没有创建分支机构。我怀疑你也不需要使用它们,而是可以从你的发布标签进行部署。
答案 1 :(得分:1)
我使用SVN已经多年了,但有时候仍然会这样做,但我慢慢地将我的团队转换为git.Git更快,更灵活,允许本地提交。你可以在线或离线工作。使用git,你不会需要一个分支和标签的文件夹结构 - 你只需要说git branch或git标签,它会自动获取你项目的快照.svn和git都有利弊,但总的来说我觉得我会喜欢git好一点。它也是“新事物”,所以当你最终与团队合作时,你可能会更好地学习。
我们分发发布。所以trunk(或git中的master)是当前代码所在的位置。错误修复和快速更改去那里。需要花费超过几个小时的开发才能进行分支 - 用于新项目,新增项目,以及您正在进行的网站。当bug修复并且事情进入主干时,我们将它们合并回我们的分支,因此它具有最新的修复和微小的更改。分支完成后,我们部署到该分支,使其成为主干,并归档旧主干。我们还标记了我们发布的任何内容,因此我们可以快速了解生产的内容。
我可能会在github上查看私人回购以开始使用。或者你可以在本地使用git工作,但很高兴有一个异地服务器用于备份或将一些东西拉到另一台机器上。
答案 2 :(得分:1)
你真的有4个问题
是否真的有必要使用典型的SVN结构(主干/分支/标签)?
不,它只是更实用,更有用,经过长时间测试的工作流程:标签是永久性标签,分支允许单独解决任务并隐藏最终点(在行李箱中)的复杂性,并且在您拥有时不会破坏所有项目某事未完成
我不能简单地将repo用作web-root吗?
您不能使用存储库本身 - 存储库不是文件系统中的树,与您的项目相同。您可以尝试使用工作副本作为网站,但可管理(更新“什么”和“何时”)无版本快照(至少我认为是这样)是更自然的方式
我如何从分支机构中受益?
单独的开发线,其中:
我有什么理由可以从GIT中受益吗?
不是来自Git,而是来自DVCS作为班级 - 是的,这是可能的(不是必须的):并且每个人都有自己的理由