Questions tagged «version-control»

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

3
适用于多个活动版本的Git工作流程,同时处理修补程序
我正在尝试选择最适合我们产品的Git工作流程。以下是参数: 我们一年会发布一些主要版本,最多可以说10个 我们同时有多个版本的产品处于活动状态(有些人使用v10.1,有些人使用v11.2,依此类推) 我们需要能够同时处理多个发行版(因此我们可以处理v12.1,但是当我们到达发行版末尾时,我们将同时开始处理v12.2)。 发现严重错误后,我们需要能够修复版本 到目前为止,这是我认为它可以工作的方式: 使用单个远程仓库 从master创建分支12.1 根据12.1创建要素分支,提交并合并回12.1,然后按入 一旦我们需要开始开发将来的版本,请基于12.1创建一个新的分支12.2。 从那时起,在使用12.1的功能时,从12.1创建分支,提交更改,然后合并到12.1和12.2中, 如果使用12.2的功能,请从12.2创建分支,提交更改,然后仅合并到12.2, 版本12.1完成后,将其合并到master和tag master分支中,并带有12.1 如果需要修补程序,请从需要该修补程序的最早的发行分支创建修补程序分支,提交更改,然后合并回该发行版和可能受影响的将来发行版的所有发行分支;如果最新的稳定版本分支受到影响,请将其合并到master。 我有一些担忧: 我不确定将修补程序从旧分支合并到新分支是否会很顺利,尤其是在存在许多重叠更改的情况下;在看起来有冲突的情况下,在每个分支中手动进行热修复会更聪明吗? 我看到的工作流模型似乎并没有使发行分支保持活跃,一旦完成,发行就被合并到主版本中,被标记并删除了。我的问题是,如果我拥有的只是master中的标签,那么我就不怎么管理发行版的状态,似乎更容易在分支中进行修补,然后有了发行版,我可以随时返回具有最新的修补程序(甚至可以在发行版中标记该修补程序)。不知道有什么办法可以使我回到master内,并以某种方式获取已应用修补程序的发行版副本并更新该标签。 考虑到我已经指定的要求,我对我可能忽略的事情或完成事情的更好方法表示了赞赏。

3
何时将一个项目分成多个子项目
我想知道将我正在处理的项目分成两个存储库而不是一个存储库是否有意义。 从我可以说: 前端将用html + js编写 .net后端 后端不依赖于前端,前端不依赖于后端 前端将使用后端实现的一个宁静的api。 前端可以托管在任何静态http服务器上。 到目前为止,存储库具有以下结构: 根: 前端/* 后端/ * 我认为将两个项目都放在同一个存储库中是一个错误。由于两个项目之间没有相互依赖关系,因此它们应属于单独的存储库,并且如果需要,则应具有包含子模块的父存储库。 有人告诉我这是没有意义的,这样做不会给我们带来任何好处。 这是我的一些论点: 我们有两个互不依赖的模块。 长期拥有两个项目的源历史记录可能会使事情复杂化(尝试在历史记录中搜索前端中的某些内容,而您有一半的提交与所寻找的bug完全无关) 冲突和合并(这不应该发生,但是让某人推送到后端将迫使其他开发人员提取后端更改以推送前端更改。) 一个开发人员可能只在后端工作,但总是不得不拉扯前端或反过来。 从长远来看,将是时候进行部署。以某种方式,前端可以在拥有一个后端服务器的同时部署到多个静态服务器。在每种情况下,人们都将不得不要么克隆整个后端,要么创建自定义脚本以仅将所有前端推送到所有服务器或删除后端。如果只需要一个,则仅推/拉前端或后端比两个都容易。 反驳论点(一个人可能同时在两个项目上工作),使用子模块创建第三个存储库并进行开发。历史记录保存在各个模块中,您始终可以创建标签,在这些标签中,后端/前端的版本确实可以同步工作。将两个前端/后端放在一个仓库中并不意味着它们可以一起工作。它只是将两个历史合并到一个大型仓库中。 如果要将自由职业者添加到项目中,将前端/后端作为子模块将使事情变得更容易。在某些情况下,您实际上并不想授予对代码库的完全访问权限。如果您想限制“局外人”可以看到/编辑的内容,拥有一个大模块将使工作变得更加困难。 错误介绍和修复错误,我在前端插入了一个新错误。然后有人修复了后端的错误。对于一个存储库,在新错误之前回滚也将回滚后端,这可能使其难以修复。我必须将后端克隆到另一个文件夹中,以使后端工作,同时修复前端中的错误……然后尝试重新合并东西……拥有两个存储库将很轻松,因为移动了一个回购的HEAD不会改变另一个。并且针对不同版本的后端进行测试将是轻而易举的。 有人可以给我更多的论据来说服他们,或者至少告诉我为什么将项目分为两个子模块是没有意义的(更复杂的)。该项目是新项目,代码库已有两天的历史,因此修复还为时不晚。

10
作为单独开发人员编写提交消息?
在我和其他程序员共享存储库的项目中,即使我是主要开发人员,我也总是编写提交消息。 但是在那些我是一个项目的单独开发人员的项目中,该存储库托管在我的个人笔记本电脑上,甚至不由客户端托管,因此,除了我自己之外,没有人会看到提交,如果我仍然编写提交,消息? 到目前为止,我一直在写它们,但是我发现我从未回过头来查看我的提交消息。我抽出时间来写下这些消息,但是即使我也再也看不到它们。 作为单独的开发人员写提交消息有什么充分的理由,还是您应该跳过它们而只专注于开发?

11
源代码控制中的二进制文件
当针对嵌入式设备和其他奇异世界进行开发时,很可能您的构建过程将包含多个专有二进制文件,并使用它们的特定版本。所以问题是,它们是否在源代码管理中?我的办公室遵循“从源代码管理中签出包含编译代码所需的一切”的规则,这引起了一些严重的争论。 我反对这一观点的主要论点是使源代码控制数据库过大,缺少差异二进制文件(请参阅有关该主题的先前问题)。这违背了签出,构建,知道您具有先前开发人员想要的精确环境并且没有收集适当文件(具有特定版本的情况!)的能力。

9
在单独工作和处理小型项目时使用某种版本控制?
我经常只为自己从事小型项目。我正在使用一台机器,但是最近我还是考虑使用某种版本控制。这将带来一些好处,例如: 我不再需要本地备份了 错误很容易消除 历史可以保持 但另一方面,它也有一些缺点,例如: 需要额外资源 是时候设置,习惯了,等等。 根据您的经验,单独工作时使用修订控制是件好事吗?

3
重写的版本控制实践
我们用语言X开发了产品(原型)P_OLD,现在我们正从头开始用语言Y将其重写为P_NEW。 由于P_NEW和P_OLD是同一产品: P_NEW应该只是旧的P_OLD分支还是应该是它自己的存储库? 从版本控制角度来看,处理如此大的更改的通常方法是什么?

10
应该将临时代码置于版本控制之下,如何进行?
这是临时/本地代码的一些示例。为了使用代码库,它是必需的,但是成为其中的一部分将是有害的: 项目文件。可能需要编辑路径才能反映当前PC上的布局。 生成文件。例如,在调试过程中可能需要关闭优化,但对于CI服务器则不需要。 肮脏的丑陋骇客。例如return 7在一个函数的中间,为了测试某些东西(取决于该函数),并怀疑它的值是7。我分行的生活 我尝试将它们保持在git commit中,在将其推送到存储库然后推送之前,我总是将其重新定位到顶部HEAD~。这非常不便,不适用于svn。藏起来让我更加恐惧-“我记得推后弹开吗?”。 每次汇编汇编提交时,使代码脱离版本控制都会带来令人不快的噪音,而且它可能在某个星期五晚上偶然被引入到提交中。 对于这样的一次性代码,什么是理智的解决方案?

11
您最好的程序员是否应该将其他所有人的代码检入源代码控制中?
svn和git之间的区别之一是控制对存储库的访问的能力。很难将二者进行比较,因为对于完全应该允许谁提交更改的观点存在差异! 这个问题是关于将git用作某个公司的团队的集中存储库。假设团队成员的技能水平各不相同,这与大多数公司中的情况大同小异。 Git似乎假设只有最好的(最有生产力,最有经验的)程序员才能签入代码。如果是这种情况,您将他们的时间花在了编写实际代码以检查其他人的代码以进行检入方面。我真的想将这个问题的重点放在最佳程序员时间的最佳利用上,而不是一般的最佳版本控制实践上。一个必然的结果是,如果优秀的程序员的大部分工作是检查他人的代码,他们会辞职吗?我认为这两个问题都归结为:审查是否值得提高生产力?

2
如何执行良好/更好的源代码控制实践?
我怀疑我专注于错误的问题,因此在介绍我设想的可能次优的解决方案之前,我将首先描述我认为问题所在。 当前情况: 目前,我的同事只有在很长一段时间内才提交他们的代码更改,这些更改分散在整个项目中。我猜这是进步,因为不久前他们只是将.zip存档放在某些网络共享上。尽管如此,合并仍然是一场噩梦-坦白地说,我已经受够了。而且我也厌倦了交谈,解释和乞讨。这只是必须停止-不要让我不断成为“坏人”。 我的解决方案: 由于似乎对这些问题一无所知,并且/或者对这些问题没有兴趣,而且我不能指望任何努力可以持续几天以上……因此,我想让几个小时的颠覆服务器来做这些事情。唠叨。 我的问题: 我是在这里偏离基地还是在看错问题?似乎我缺少了一些东西,而且我认为通过查看解决问题的工具来问错了事情。 我应该在寻找一种工具来解决此问题,还是应该采取什么措施解决此问题?

1
如何在生产代码中处理函数名称错误?
我最近在GitHub上遇到了一个Python库。该库很棒,但是在函数名称中包含一个明显的错字。让我们称它为dummy_fuction()应该dummy_function()。此功能肯定是“狂野的”,最有可能在嵌入式系统中使用。 我想到的第一件事是添加具有正确名称的函数的第二个版本,并为下一版本的第一个版本添加弃用警告。 三个问题: 上面的方法会产生意想不到的后果吗? 是否有解决此类问题的标准方法? 弃用警告应保留多长时间?

4
零知识代码托管?[关闭]
鉴于最近有关政府对在线服务提供商存储的数据进行广泛监视的启示,零知识服务现在非常流行。 零知识服务是其中所有数据都以未存储在服务器上的密钥加密存储的服务。加密和解密完全在客户端进行,并且服务器永远不会看到纯文本数据或密钥。结果,服务提供商无法解密,也无法将数据提供给第三方。 举个例子:SpiderOak可以被视为Dropbox的零知识版本。 作为程序员,我们高度依赖于我们最敏感的数据(我们的代码),并将它们信任特定种类的在线服务提供商:代码托管提供商(如Bitbucket,Assembla等)。我当然在这里谈论私有存储库-零知识的概念对于公共存储库没有意义。 我的问题是: 创建零知识代码托管服务是否存在任何技术障碍?例如,关于流行的版本控制系统(例如SVN,Mercurial或Git)使用的网络协议是否存在某些问题,这将使(或不可能)实现一种方案,其中使用服务器不知道的密钥? 当今是否存在零知识代码托管服务?

10
您如何避免在错误的分支上工作?
通常,小心就足以防止问题发生,但是有时我需要通过检查随机变量的源代码控制路径来仔细检查我正在处理的分支(例如 “嗯……我在dev分支中,对吗?”)文件。 在寻找一种更简便的方法时,我想到了相应地命名解决方案文件的名称(例如 MySolution_Dev.sln),但是每个分支中的文件名不同,因此我无法合并解决方案文件。 没什么大不了的,但是您有没有使用任何方法或“小技巧”来快速确保您位于正确的分支中?我正在将Visual Studio 2010与TFS 2008一起使用。

18
SourceSafe真的安全吗?
整个上午都在尝试检查某些内容-我现在意识到我已经失去了几天的工作。 它发生在之前-显然是SourceSafe的常见事件。SourceSafe是否可以成功使用而没有问题,如果可以,如何使用?


11
分散版本控制系统的业务案例
我搜索了git / mercurial / bazzr系统,使其优于集中式系统(subversion,perforce),但没有找到任何商业原因。 如果您试图将DVCS出售给非技术人员,您会为DVCS 增加利润提供哪些论点。 我将很快向我的经理介绍git,这将需要一些时间来转换出Subversion存储库,并花费一些费用来购买smartgit许可证。 编辑我试图使这个问题成为关于集中式与分散式的一般性讨论,但是不可避免地它变成了git vs subversion。当然,有比颠覆更好的集中式系统。

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.