版本控制中的代码应如何存储?


19

版本控制中的代码应如何存储?

开发人员友好?这样程序员就可以快速获取最新的代码,并可以在不做许多更改的情况下从其编辑器运行它?(例如指向dev DB..etc的配置文件)

要么

它应该对生产友好吗?源代码应采用易于在生产环境上部署的方式,并且当开发人员采用最新版本时,他应根据开发需求进行更改。

Answers:


56

为什么选择?应该两者兼而有之。

您的开发环境应该配置为与签出,打开,构建,运行,调试一样容易(例如:没有绝对路径!)。您可以使用编译指令,配置类+依赖注入,甚至是ASP.NET中的perso.config之类的技巧轻松完成此操作

您的自动构建脚本应该足够定制,以照顾特定的生产配置,清理,包装等。


什么是perso.config?一个快速的谷歌并没有帮助我。
Tim Murphy'9

1
在.NET应用程序配置文件中,您可以引用另一个应用程序配置文件,该文件在找到时将覆盖指定的设置。因此,您可以创建一个dev.config文件来覆盖诸如连接字符串和其他内容之类的东西,并将其从存储库中排除。

5
+1-开发人员不应考虑获取正确的来源。此外,生产部署不应直接从源代码控制中进行,而应使用正确构建,测试和可跟踪的部件进行。此过程应完全自动化。

9

当这是一个希望人们做出贡献的开源项目时,我当然会选择友好的开发人员。

我对开源项目的最大不满是,存储库很少包含构建代码所需的所有依赖关系(有时出于实际或法律原因),但是当它们不包含时-有些甚至不介意告诉您什么依赖关系您需要,或更重要的是,您需要它们的哪个版本。(最好是从哪里获得)

有时,您可能需要花费半天以上的时间来获取并编译其他几个项目,以构建您想要的项目。

当然,这实际上仅与Windows上的开发有关。


1
它使我烦恼。您甚至可以在非常知名的OSS上找到它。
Tim Murphy'9

1
有些系统可以通过自动获取依赖项来缓解该问题。例如Apache Maven,Ivy或scons。
sleske 2011年

4

两者都有,但这取决于制作的频率。对于许多定制的应用程序,部署是手动完成的,也可以在本地完成。另一方面,无论项目大小,开发人员都会不断提交代码。我认为,确保开发人员可以正确使用版本控制更为重要,这样可以使他们的生活更轻松,因此他们将有时间专注于代码,而不是通过版本控制找到方法。


如果使用连续部署引擎进行构建,则生产部署应该不是问题。

1

它应该对生产友好,否则维护自动化构建会出现问题。


8
为什么?自动化的构建脚本可以进行所有必要的翻译,以将源重组为可部署的形式。永远不要打扰人们自动化解决的问题。
Joeri Sebrechts 2010年

1

我全力以赴降低摩擦,以便更轻松地完成工作,但是您还需要考虑故障模式。

如果始终将源存储库版本配置为供生产使用,那么开发人员在运行系统之前无法重新配置会导致什么结果?开发人员针对生产运行代码。

不管开发人员对生产进行随机更改的方式是否存在其他障碍,以失败模式进行构建以鼓励其发生似乎都是危险的。

我建议提交的代码中包含的默认值应始终安全。如果愿意,也可以将生产配置文件检入源代码管理中-我几乎总是这样做-但请将其保存在“不可用”的位置。


0

我倾向于争取生产友好。它可以使您的构建保持清洁,并防止不必要的设置进入生产环境。


0

绝对对开发人员友好,带有脚本以自动进行质量检查和生产更改。


-1

为什么不为可部署代码创建一个分支(取决于您使用的版本控制-我使用Git),为开发人员准备的版本提供一个分支?这听起来好多了,设置起来也不难。

您可以工作并提交更改,然后将其合并到可部署版本上。


因为寿命长的分支机构管理起来很昂贵,而且往往很难合并。您必须记住在两个分支上进行所有更改。使两个版本相同和/或具有一个脚本以从开发人员就绪的代码生成可部署的artifcat更好。
bdsl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.