我们的存储库中的某些文件是每个开发人员的个人文件。例如,一些开发人员使用本地数据库,该数据库在项目的属性文件中配置。所以每个开发者都有不同的设置当一个开发人员提交时,他总是要小心不要提交他单独配置的文件。
你是如何处理的?
答案 0 :(得分:4)
我们的属性文件位于“properties”目录下。每个开发人员都有自己的“username.properties”文件,他们可以在特定于环境的文件中覆盖属性,例如“dev.properties”或“test.properties”。这利用了ANT的不可变属性(包括个人优先,THEN环境属性)。
答案 1 :(得分:3)
在源代码管理中保留一组默认值,然后:
让每个开发人员都有一组他们自己管理的可选配置(例如,不保留在源代码管理中)或
让每个开发人员在某种识别方案(@Dustin使用的username.properties)中保留自己的源代码控制配置
将开发人员的特定配置保留在源代码管理中的优势使得从一台计算机迁移到另一台计算机变得容易(例如,在硬件故障或升级的情况下)。它是一个简单的svn co [repos]和ant
答案 2 :(得分:2)
使用SVN:忽略(或等效)以确保它们不会被检入您的主干分支。
答案 3 :(得分:2)
我们使用ant构建或应用程序,我们的ant构建文件引用了这样的文件名:
$ {env.COMPUTERNAME} - 。properties
此文件中的所有属性都将覆盖主构建文件中的属性(如果存在)。因此,开发人员可以创建以其计算机名称命名的覆盖文件,以覆盖他们喜欢的任何属性,例如数据库名称和/或jdbc url。然后可以将此文件检入版本控制
答案 4 :(得分:2)
我们只是在开发人员之间保持标准。每个人都使用相同的目录,数据库名称和用户,因此我们不必担心这些事情。
亲切的问候
答案 5 :(得分:0)
好的,但是例如db-config-file应该保持在版本控制之下,不能被忽略。
答案 6 :(得分:0)
如果他们必须在同一个存储库中,请创建一个“dev”文件夹或其他内容,然后为每个开发人员创建一个子文件夹以检入他们的用户文件。
或者有一个单独的用户文件存储库。
或者让他们了解他们对自己的文件所做的事情。
答案 7 :(得分:0)
这在前一篇文章中得到了回答。虽然问题更多地针对WebApps,但实际问题正是您现在面临的问题。
How do you maintain java webapps in different staging environments?
答案 8 :(得分:0)
我们的项目设置类似于其他您拥有某种特定于开发人员的属性文件的项目,但我不认为应该将特定于单个开发人员的文件检入源代码管理。
我们有一个文件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"
答案 9 :(得分:0)
使用模板,你不要将db-config添加到源代码控制(实际上你在他身上使用SVN:IGNORE),并添加db-config.tmpl或db-config.template或db-config.tmp或其他这清楚地告诉你它是一个模板。
此文件具有基本配置,并且要复制到'db-config'(刚刚复制,保留模板以接收更新),供每个开发人员自定义。
答案 10 :(得分:0)
使用git或其他分散版本控制系统。然后,每个开发人员都可以将他的私人更改保存在他自己的私有分支中,在该分支上工作,然后从该分支中挑选完成的功能,进入开发的主干。
答案 11 :(得分:-1)
不要将它们置于版本控制之下,并使用您的工具的忽略功能来防止它们被意外签入。相反,版本生成它们的脚本,可以使用版本控制的数据和本地的,非版本的 - 受控数据。这使它们保持最新,同时进行任何适当的本地修改,而没有任何这些修改的危险滑回存储库。
编辑:某些文件格式具有可选择使用本地覆盖的功能。这些可以签入,但一般来说,许多人都不够聪明。因此,这种解决方法。
答案 12 :(得分:-1)
他们应该绝对保持版本控制。您可以在用户环境中使用环境变量来检测特定于开发人员的属性。在蚂蚁中,例如:
<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
中的所有值。
这也有助于检查您的同事配置以开始或诊断问题。