Questions tagged «version-control»

跟踪,存储和检索源代码修订的编程学科。


13
是否有不使用版本控制和持续集成的严肃公司?为什么?
我的一位同事给我们的印象是我们的软件部门非常先进,因为我们同时使用了具有持续集成功能的构建服务器和版本控制软件。这与我的观点不符,因为我只知道一家公司制造过认真的软件,却没有一家。但是,我的经验仅限于少数公司。 有谁知道有一家从事软件业务并且不使用这些工具的真实公司(超过3个程序员)?如果存在这样的公司,是否有充分的理由让他们不这样做?

3
为什么不立即提交合并的更改?
我的办公室使用Git和SourceTree进行版本控制。之所以如此,是因为当我加入时,版本控制为零,而SourceTree是我曾经使用过的唯一系统。我绝对不是专家,但是我是同事中经验最丰富的人,因此我是事实上的专家,负责教会每个人正确使用Git并纠正他们犯的任何错误。 我正在制作一个教程文档,其中涉及Git和SourceTree,并解释了该过程的每个步骤。在“拉”过程中,“ SourceTree”对话框允许您选择“立即提交合并的更改”选项。我了解它的作用以及为什么有用。我不明白的是为什么会有人不希望使用此功能。 有人可以解释为什么您永远不想自动提交合并的更改吗?我试图理解其原因,以便可以更好地解释该功能的用途,并了解将来需要注意的陷阱。 编辑:我不认为我的问题是链接的问题的重复。链接的问题广泛地询问多久提交一次。我在问为什么不选择不使用与在SourceTree中提交合并有关的特定功能。

5
版本控制数据库的内容
我正在开发一个涉及用户可编辑内容的Web项目,并且我希望能够对存在于数据库中的实际内容进行版本跟踪。基本上,我想实现Wiki样式的更改历史记录。 做一些背景研究,我看到了很多有关如何对数据库模式进行版本控制的文档(实际上已经控制了我的数据库),但是关于模式跟踪数据库内容变化的任何现有策略都至少在模式版本控制方面大失所望。在我的搜索中。 我可以想到几种实现我自己的变更跟踪的方法,但它们似乎都非常粗糙: 保存每次更改的整个行,并使用主键将行与源ID相关联(这是我目前最倾向于的方法,这是最简单的方法)。但是,许多小的更改可能会导致很多桌子膨胀。 保存每个更改之前/之后/用户/时间戳记,并使用列名称将更改关联回相关列。 用每列的表保存之前/之后/用户/时间戳(会导致表过多)。 使用列将每个更改的差异/用户/时间戳记保存起来(这意味着您必须遍历整个干预更改历史记录才能返回到特定日期)。 最好的方法是什么?自己动手似乎是在重塑别人的(更好)代码库。 PostgreSQL的加分点。


5
处理特定于客户的软件补丁的现实方法是什么?
我正在尝试收集其他人解决以下问题的有效方法。在工作中,我们被迫发布仅希望特定客户看到的软件补丁(安装在最终用户系统上)。定制代码位于其自己的源代码控制分支中。问题是我们有两条并行的代码行(和构建脚本)保持同步,并且每次我们修补原始代码时,我们都必须修补和测试客户特定的代码。 我很好奇,其他组织如何处理这种情况?我们向业务解决方案开放,而不仅仅是技术(与源代码控制相关)解决方案。例如,我们已经讨论过告诉客户他们无法在该分支上接收更新。 我们的分支策略是这样的(基于Visual Studio TFS分支指南,尽管我们正在使用Subversion)

2
NET中如何构造多个重叠的解决方案/项目?
我最近开始为具有旧的旧版代码库的新客户工作,在旧版代码库中有多个.net解决方案,每个解决方案通常托管一些对该解决方案唯一的项目,然后“借用” /“链接”(添加现有项目)其他一些项目从技术上讲,它属于其他解决方案(至少如果您按TFS中的文件夹结构进行操作) 我从未见过如此交错的设置,没有明确的构建顺序,有时解决方案A中的项目只是直接从解决方案B中托管的项目的输出目录中引用dll,有时即使已驻留该项目,也直接将其包括在内FAR在文件夹结构中消失。 似乎所有内容都已针对开发人员的延迟进行了优化。 当我面对他们为什么没有CI服务器时,他们回答说,很难像这样组织代码。(我现在正在设置它并咒骂此代码组织) 这些解决方案是围绕部署工件(需要一起部署的东西在同一个解决方案中)组织的,我认为这是一个明智的决定,但是这些解决方案(项目)的内容无处不在。 在多个解决方案/部署工件之间重用公共类库时,是否存在最佳实践的共识, 如何在VCS中构造代码 如何促进在单独的部署工件之间共享业务逻辑

7
您如何版本/跟踪对SQL表的更改?
在每个人都在对本地表和开发表进行更改的开发人员团队中工作时,如何使所有更改保持同步?每个人都保留其sql更改的中央日志文件?一个Wiki页面,用于跟踪alter table语句,开发人员可以运行以将其本地db更新到最新版本的单个.sql文件?我已经使用了其中一些解决方案,并且希望获得一个可以一起工作的好的可靠解决方案,因此,感谢您的想法。

3
您选择的{DVCS}中命名分支的良好命名约定
我们正在办公室中缓慢整合Mercurial,并开始使用命名分支进行Web开发。 不过,就命名分支机构而言,我们还没有找到很好的约定。 我们尝试了: FeatureName(可以看到此导致的问题) DEVInitial_FeatureName(当开发人员来来往往时可能会造成混淆) {uniqueID(int)} _功能 到目前为止,uniqueID_featureName获胜了,我们正在考虑将其维护在一个小的数据库中,仅供参考。 它将具有:branchID(int),featureName(varchar),featureDescription(varchar),日期,谁等... 这将给我们这样的分支:1_NewWhizBangFeature,2_NowWithMoreFoo,...,并且我们可以轻松地参考该分支的功能,而不必检查日志。 有更好的解决方案吗?


3
长期运行未发布代码的Git分支策略
在我们的团队中,除了个别的工作单元(故事),我们还有工作时间更长的主题(史诗)。多个故事成为史诗。 传统上,我们为每个故事提供功能分支,并在它们通过质量检查后直接合并为母版。但是,我们希望开始阻止在Epic中发布已完成的故事,直到Epic被视为“功能已完成”为止。我们只会在整个Epic关闭时才将这些功能发布到生产环境中。此外,我们有一个每晚生成的服务器-我们希望所有封闭的Stories(包括那些不完整的Epics的故事)都将自动部署到该每晚的服务器。 关于如何管理我们的仓库来实现这一目标,有什么建议吗?我考虑过引入“史诗般的分支”,在这里我们将封闭的故事合并到相关的史诗分支中,而不是直接掌握。但我担心的是: 我担心如果史诗分支长时间保持开放可能会发生合并冲突 每晚构建需要将所有史诗分支合并为一个“每晚构建”分支。同样,可能会发生合并冲突,这将自动完成

2
版本号作为文件名的一部分
我看到某些软件的文件名中包含版本号,而其他软件则没有。我更习惯于后一种类型,并且我认为这种类型更为流行,但是有时我在javascript库中看到前一种类型。例如,jQuery的文件名为like jquery-2.1.0.js而不是jquery.js。每当我更新这些类型的文件时,都必须在其他程序中查找加载这些文件的位置,并更改它们所引用的文件名,并手动删除这些库的旧版本。这对我来说很不方便,因此我宁愿重命名文件以排除版本号,并保持所引用的文件名不包括版本号。 我怀疑这些数字是用于某种版本控制的,但是不清楚何时以及如何使用它们。 在文件名中包含版本号的优缺点是什么? 对于文件名中的哪些软件或语言区域使用版本号,而哪些区域/语言不使用版本号,是否存在事实上的共识?如果是这样,那有什么口粮吗?

2
Git存储库的结构
很抱歉,如果这是重复的,我看了看。 我们要搬到Git。在Subversion中,我习惯于使用\ trunk,\ branches和\ tags文件夹。 使用Git,在分支之间切换将替换工作目录的内容,因此我是否可以假设我们以前的工作方式不适用于Git? 我的猜测是,我将拥有一个可能带有gitignore和readme.txt的repo文件夹,然后是组成该repo的项目的文件夹,仅此而已。

7
为什么不提交未解决的更改?
在传统的VCS中,我可以理解为什么您不提交未解决的文件,因为您可能会破坏构建。但是,我不明白为什么您不应该在DVCS中提交未解析的文件(其中有些实际上会阻止您提交文件)。 相反,我认为你的版本库应该从被锁定推和拉,但不承诺。 在合并过程中能够提交有几个优点(如我所见): 实际的合并更改在历史记录中。 如果合并很大,则可以进行定期提交。 如果您犯了一个错误,那么回滚会很容易(不必重做整个合并)。 在将文件标记为已解决之前,可以将其标记为未解决。这将防止推/拉。 您还可能有一组变更集充当合并,而不是一个变更集。这样一来,您仍然可以使用的工具git rerere。 那么,为什么要对未解决的文件进行提交以防止/阻止呢?除了传统之外,还有其他原因吗?


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.