我们资源库中的某些文件对每个开发人员都是单独的。例如,一些开发人员使用本地数据库,该数据库在项目的属性文件中进行配置。所以每个开发者有不同的设置。当一个开发人员提交时,他总是必须注意不要提交他单独配置的文件。如何处理版本控制下的开发人员个人文件?
你是如何处理这个问题的?
我们资源库中的某些文件对每个开发人员都是单独的。例如,一些开发人员使用本地数据库,该数据库在项目的属性文件中进行配置。所以每个开发者有不同的设置。当一个开发人员提交时,他总是必须注意不要提交他单独配置的文件。如何处理版本控制下的开发人员个人文件?
你是如何处理这个问题的?
我们的属性文件位于“属性”目录下。每个开发人员都有自己的“username.properties”文件,它们可以覆盖特定于环境的文件(如“dev.properties”或“test.properties”)中的属性。这利用了ANT的不变属性(包括个人第一,THEN环境属性)。
使用SVN:忽略(或其等价物),以确保它们未被检入您的干线分支。
好的,但例如一个db-config文件应该保留在版本控制下,不能被忽略。用蚂蚁和蚂蚁我们构建文件
我们建立或应用程序有这样一个文件名的引用:
$ {} env.COMPUTERNAME - 性能
所有在此文件中的属性将覆盖主构建文件中的属性(如果它们存在)。因此开发人员可以创建一个覆盖文件,以他们的机器名称命名,覆盖他们喜欢的任何属性,例如数据库名称和/或jdbc url。然后可以将该文件检入版本控制
不要让它们处于版本控制之下,并使用工具的忽略功能来防止它们被意外检入。相反,版本生成它们的脚本可以使用版本控制的数据和本地非版本控制的数据。这使它们保持最新状态,同时进行任何适当的本地修改,而不存在这些修改滑回存储库的任何危险。
编辑:一些文件格式有能力可选地使用本地覆盖。这些都可以签入,但总的来说,很多人都不够聪明。因此,这种解决方法。
他们应该绝对被保存在版本控制。您可以在用户环境中使用环境变量来检测特定于开发人员的属性。在蚂蚁,例如:
<property environment="env" />
<property file="${basedir}/online/${env.LOGNAME}.build.properties" />
<property file="${basedir}/online/${env.USERNAME}.build.properties" />
<property file="${basedir}/online/default.properties" />
如果你有LOGNAME
集,说,“davec”和davec.build.properties
存在,它将在default.properties
覆盖的任何值。
这对于检查您的同事配置以开始使用或诊断问题也很有帮助。
如果他们必须位于同一个存储库中,请为每个开发人员创建一个“dev”文件夹或其他文件夹,以便检查其用户文件。
或者有一个单独的用户文件存储库。
或者留给个人开发者关于他们用自己的文件做什么。
这是以前的帖子回答。虽然问题更多地针对WebApps,但实际问题正是您现在面临的问题。
How do you maintain java webapps in different staging environments?
我们的项目是建立类似人,你有某种性质的文件,独特的开发者,但我不相信,文件具体到单个开发人员应该签入到源控制。
我们有一个文件personal.properties
它被加载并覆盖任何项目默认值。该文件位于用户主目录中。对于特定于用户的任何值,默认值被设定如下:
database_user_name = DATABASE_USER_NAME_MUST_BE_SET_IN_PERSONAL_PROPERTIES_FILE
该文件从未被显影剂编辑,以便没有用户特定的信息被登记到源控制,并且如果一显影剂忘记设置在其personal.properties值文件你得到一个明显的错误,如:
Unable to login to database with username: "DATABASE_USER_NAME_MUST_BE_SET_IN_PERSONAL_PROPERTIES_FILE"
保持一个集源控制的违约,然后或者:
HAV每个开发人员都有一套可选的管理自己的配置(例如,不保存在源代码控制)或
有每个开发者保持自己在CONFIGS源代码控制某种标识方案(如@Dustin username.properties使用)保持开发商的
优势源代码控制中的特定配置使得从一台计算机迁移到另一台计算机变得容易(例如在发生硬件故障或升级的情况下)。它是一个简单的svn co [回购]和蚂蚁
使用模板,你不添加db-config到源代码管理(实际上你使用SVN:IGNORE),并添加db-config.tmpl或db-config .template或db-config.tmp或其他明确告诉你它是模板的东西。
该文件具有基本配置,并且旨在被复制到'db-config'(只需复制留下模板以接收更新)以供每个开发人员自定义。
使用git或其他分散版本控制系统。然后,每个开发人员都可以在自己的私人分支中保留其私人分支,在该分支上工作,然后樱桃将完成的特征从该分支中回收到开发主干中。
我们只是在开发者之间保持一个标准。每个人都使用相同的目录,数据库名称和用户,所以我们不需要担心这些事情。
亲切的问候
用户特定的设置不应该被保持到源代码控制(见达斯汀的答案似乎是一个很好的解决方案)。 – Mac 2008-09-22 17:26:05