Questions tagged «version-control»

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

6
是否有一个版本控制系统可以显示对特定方法或功能的更改?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 有时候能够说出这样的话会很好: (git|svn|hg|etc) diff Foo.c:main (git|svn|hg|etc) log log Foo.c:main 查看自上次提交以来对源文件中特定功能所做的更改或更改的完整历史记录。我的问题有两个: 是否存在这样做的东西? 这样的工具会实用吗?为了比较该函数的不同版本,它必须对每个修订版本进行一些简单的代码解析;开销是否太高而无法提高效率?

2
如何使我的visualstudio数据库项目与数据库同步?
我想将数据库架构与Visual Studio .dbproj数据库项目同步。 现在,我在大多数数据库开发工作中都使用SSMS,并且在需要同步db模式和.dbproj时,必须手动使用Visual Studio的模式比较工具。我为什么要这个?因为: 这是签入更改的唯一方法 这是应用更改的唯一方法 否则,将在获取文件时引起一些合并问题(基本上,如果“获取最新”包含我一直在更新的db对象上的某些db更改,而无需检出它们,则不会触发合并,并且很容易跟踪哪个版本是哪个) 很高兴能够在最新版本的架构中使用VisualStudio的搜索功能 很高兴能够使用搜索结果从VS修改存储过程(通常是在重命名文件时)。 除了自动执行“模式比较”工具使其每5分钟运行一次(这听起来几乎不是“干净”的解决方案)之外,还有其他方法可以实现此目的吗? 我想尽可能地使用SSMS,但我也对将使用Visual Studio的“服务器资源管理器/数据库连接”所做的更改自动传播到.dbproj的方法感兴趣。

3
我如何估算一行代码的寿命?
我正在尝试找出一种方法来分析开源项目中的代码寿命:即,特定代码行处于活动状态并使用了多长时间。 我当前的想法是,一行代码的生命周期从第一次提交时开始,到发生以下情况之一时结束: 它已被编辑或删除, 从构建中排除, 一段时间(例如一年)内不会维护其内部版本中的代码。 注意:为了澄清为什么将“编辑”视为“死亡”,已编辑的行将被视为“新一代”或代码行。同样,除非有简单的方法可以做到,否则就无法说明血统的长寿或祖先的后裔。 还有什么会决定一行代码的寿命?

3
同一项目多个客户的分支模型建议
我们有一个非常大的项目,其中包含作为不同客户基础的几个应用程序。 每个客户都有自己的产品个性化,不同的里程碑,不同的要求等,因此每个项目将根据自己的需求独立发展。 项目的核心在每个项目中都是相似的(但不相等),并且组织的组成使得团队可以独立处理每个客户(但根据需要在他们之间进行沟通)。到目前为止,无论是通过搜索互联网还是提出一些绝妙的主意,我都找不到适合我们需求的方案:) 到目前为止,我们一直在努力使产品适应所有需求,并为需要的更改提供特定的分支,但是,尽管产品具有良好的体系结构,但它正逐渐成为一个大问题。这是我们面临的主要问题: 每个客户的里程碑不同:这意味着每个团队必须在不同的时间生产版本,而其余的提交都不会影响其稳定性或产品。 不同的要求,在某些情况下可能会或可能不会影响系统的核心。 大型团队(超过20个团队成员) 处理系统中的错误:如果团队发现其项目中的错误可能会影响其他客户,该怎么办? 注意:我们正在谈论的项目具有10 + M LOC。 注意:我们正在使用Team Foundation System,Visual Studio 2008和C#(主要)。 关于如何解决这种情况的任何建议,消息来源或想法?市场上是否有类似问题的模型?


3
保留版本控制提交历史记录与重构和文档
使用版本控制系统维护的提交历史记录几乎不需要花费任何费用。但是,在大型项目重构(或重组/清理)过程中,函数和类甚至命名空间将被移动;有时,几个文件将合并在一起,而其他文件将被拆分。这些更改通常会导致丢失一些文件的原始提交历史记录。 我个人认为,维护项目组织比保留源代码历史更为重要。优秀的项目组织可以合理地不断添加新功能,而源代码历史记录的价值似乎是可疑的。 此外,通过使用单元测试,可以快速确定回归问题。只要最新版本继续满足所有软件要求,我们是否真的需要保留源代码的历史记录? 我了解必须保留所有已发布的源代码,因为需要向客户提供支持,而无需他们执行主要版本升级。但是除此之外,保持源代码提交历史还有任何价值吗? 源代码提交历史记录是否在团队成员之间的通信中发挥任何作用?如果我们取消提交历史记录,而是依靠“源代码” +“单元测试代码”进行通信,该怎么办? 提交历史的存在是否使对有关该项目的重要信息的长期记录感到满意,例如重大的设计/需求变更以及推动这些变更的思路?


4
FOSS版本控制系统是否适用于企业?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 假设某大型公司正计划替换其现有的版本控制系统。假设仅考虑来自主要供应商的系统,这些系统因具有“支持”而花费数十万美元。 企业环境中的版本控制是否必须昂贵?您的大中型公司是否使用诸如SVN / Git / Mercurial之类的FOSS VCS?经验是什么? 我必须认为它不需要昂贵,因为有很多免费的选择,而且如果这是主要问题,那么可能有一些公司为FOSS VCS提供付费支持。 我不打算用这个问题来比较VCS或决定哪个是最好的,而只是了解在企业IT环境中使用VCS的经验。

2
Unity中版本控制的最佳做法?
我对如何在Unity中使用版本控制感到有些困惑,尤其是对于不仅仅是场景的对象(例如场景或预制件)。 最近,当我和我的同事在同一场景的不同部分工作时,我们遇到了一个问题。导致冲突,分支和融合。 最后,无论如何,我的修改被他的修改所覆盖。 我目前看到的唯一方法是我们轮流在同一对象上工作,但这似乎并不方便,特别是因为我们当前正在做的所有工作都在场景中。 人们在这种情况下通常会做什么? (我们正在使用Mercurial,BitBucket和SourceTree。)


2
缩小的CSS是否应该存储在Git中?
我使用Gulp从我正在处理的项目的SASS代码中生成缩小的CSS。 我想知道从Git上线时重新生成此缩小的CSS是否被认为是最佳实践... 要么 要将缩小的CSS文件存储在Git中,以便将它们自动实时发布到生产环境,而无需服务器方面的进一步工作? 我很感谢人们对此的想法。谢谢!

2
为什么DVCS似乎都具有未落实变更的不合理恐惧症?
来自SVN背景,使用DVCS系统时要适应的最困难的事情之一就是,它们似乎都将任何未提交的更改视为滴答定时炸弹。 在Mercurial中,如果您尝试获取更改,并且您的工作副本中有任何未提交的更改,则必须跳过所有步骤以使其仅合并传入的更改。尝试切换分支吗?这将迫使您搁置所有内容,然后必须立即在另一端立即搁置所有内容。(SVN在这两种情况下都没有问题。) Git大致相同。我正在与另一个项目的开发人员并肩工作,而我只是试图将他的提交之一挑进我的叉子中。它拒绝让我,因为我的工作副本中的更改尚未提交,与他提交中的更改完全不同的文件。 甚至没有合并选项。显然,我必须先隐藏我的更改! 如果一个人以这种极端的谨慎对待完全无害的东西,我会称其为“恐惧症”,这是一种非理性的恐惧,应视为精神障碍。但是Git和Mercurial是由两个不同的聪明,理性的开发人员团队设计的,所以我不得不怀疑他们是否知道我所不知道的东西。 是否有技术上的理由证明这种对待未承诺变更的态度是正确的?如果是这样,为什么问题仅在DVCS上存在?

4
在Subversion中,应如何设置应用程序的新主版本?
我即将开始开发我的商业应用程序的新版本(版本4)。我使用Subversion。 根据您的经验,错误和成功,您将如何建议我在Subversion中设置新版本? 这里是一些信息:在版本4发布之后,我打算在版本3中继续发布重要更新。但是,所有新功能的开发都将仅在版本4中进行。 如果相关的话:我是该产品的单独开发人员,而且情况可能仍然如此。 编辑:我知道SVN的标签和分支。我想我需要的是在我的情况下使用标签和分支的最佳策略。

2
为什么开发人员提交统计信息有害?
我长期以来(并从其他人那里听到)相信,跟踪提交统计信息(例如每个开发人员每天进行多少次提交)对开发过程有害。原因似乎很明显-开发人员将以较小的增量进行提交,以最大程度地提高每天的提交数量,但是却更难将其一分为二(也许他们的所有中间补丁都不会使存储库格式正确),并且更难以处理提交历史记录(更改将突然出现在多个提交中,而不仅仅是一次提交,还原补丁更加困难等)。 有研究表明提交统计信息有害吗?关于该主题是否有任何优雅而有争议的文章?同等适用的是关于为什么测量错误的事物会导致人们优化错误的事物的任何事情,这个问题只是其中的特例。

3
源代码控制:角色和职责-最佳实践
我正在寻找有关角色和职责的“最佳实践”,特别是谁负责从开发分支到主干(或主干)的合并。基本上,我正在寻找弹药来帮助我的事业。 让我描述一下我所面对的。我是特定应用程序的首席开发人员(所有者)。我们公司最近从VSS(我是存储我的应用程序的VSS数据库的管理员)转移到TFS(在这里我仅对“运营”团队创建的开发分支拥有权限)。在以前的工作中,我是TFS管理员,所以我了解TFS和MSBuild的使用方法。 我对使用的分支和合并策略没有任何问题(主分支,根据需要创建了错误/项目开发分支,然后合并回main,然后提升为发布分支)。我遇到的问题是: 我无法创建自己的分支。我必须创建一个TFS任务,以使“操作”团队成员为我创建分支。 我无法从Main合并到开发分支。我必须创建一个TFS任务,以使一个“操作”团队成员执行合并,然后希望他不要“踩”我的任何团队变更,因为“运维人员”可能是开发人员,也可能不是开发人员几乎不了解他正在合并的代码。 我不能从开发合并到Main。同样,我必须创建一个TFS任务,以使“操作员”执行合并,希望他能正确执行。然后,我必须创建另一个TFS任务以合并回到我的分支,以便我可以解决由于非开发人员合并到Main而发生的任何问题。 我无法创建或编辑MSBuild脚本。再次,我必须与MSBuild的“ ops”团队合作,以便只能执行最基本的构建任务。(忘记任何复杂的事情,或者天堂般的自定义任务)。 我无法执行MSBuild脚本。同样,只有“ ops”团队可以做到这一点。 最重要的是,通常是一个“离岸”资源来执行所请求的任务,因此,即使我在清晨创建任务(分支/合并/构建),它也可能不会完成直到那天晚上。 现在,“操作”团队维护发布分支没有问题。他们所做的(基本上)是从Main那里获取最新版本并将其升级到release分支;因此只要“ Main”稳定且准备就绪,发布分支就可以了。 我的意见是,技术主管(例如I)应负责维护主干(“主”)以及与开发分支之间的任何合并。团队负责人还应具有生成MS Build脚本以构建和部署到Integration测试环境的能力。 任何人都可以将我定向到可以帮助我证明自己情况的最佳做法文档吗?我所有的搜索只发现了有关分支和合并技术的最佳实践,没有提到WHO应该执行上述分支/合并。

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.