Questions tagged «version-control»

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

8
git中的“ stage”是什么意思?
我发现git很难理解,因为我找不到用于操作的单词的含义。我已经检查了字典中“ stage”的含义,但这些含义均与源代码管理概念无关。 在git的上下文中,“ stage”是什么意思?

10
我是Subversion极客,为什么我应该考虑或不考虑Mercurial或Git或任何其他DVCS?
我试图了解分布式版本控制系统(DVCS)的好处。 我发现颠覆再教育和本文由马丁·福勒是非常有用的。 Mercurial和其他DVCS促进了使用变更集和本地提交的代码处理新方法。它防止合并地狱和其他协作问题 我们不受此影响,因为我练习持续集成,除非在进行实验,否则不能在私有分支中单独工作。我们为每个主要版本使用一个分支,其中修复了从主干合并的错误。 水星让你有中尉 我知道这对于像Linux这样的大型项目很有用,但是我看不到小型且高度协作的团队(5至7人)的价值。 Mercurial更快,占用磁盘空间更少,完整的本地副本允许更快的日志和差异操作。 我也不对此感到担心,因为即使我正在处理非常大的项目,我也没有注意到SVN的速度或空间问题。 我正在寻找您的个人经验和/或前SVN怪才的意见。特别是关于变更集的概念和整体性能的提高。 更新(1月12日):我坚信值得尝试。 更新(6月12日):我亲吻了Mercurial,我很喜欢。他的樱桃当地风味的味道。我亲吻Mercurial只是为了尝试。我希望我的SVN服务器不要介意。感觉很不对劲。感觉很好。并不是说我今晚恋爱了。 最终更新(7月29日):我荣幸地复习了Eric Sink的下一本书,名为“ 版本控制示例”。他说服了我。我去Mercurial。

20
SVN比Git有什么优势?[关闭]
毫无疑问,关于程序员工具的大多数争论都归结为个人选择(由用户)或设计重点,即根据特定用例优化设计(由工具构建者)。文本编辑器可能是最突出的例子-可以在Windows上工作并且在Mac上可以在Mac上的Haskell中进行编码的编码器,可以实现跨平台和编译器集成的价值,因此可以选择Emacs而不是TextMate等等。 事实证明,新引入的技术真正地优于现有的选件并不常见。 版本控制系统(VCS),尤其是集中式 VCS(CVS和SVN)与分布式 VCS(Git和Mercurial)是否真的是这种情况? 我使用SVN已有大约五年的时间,目前在我工作的地方使用SVN。不到三年前,我转到所有个人项目的Git(和GitHub)。 我可以想到Git相对于Subversion的许多优点(并且在很大程度上抽象出了分布式与集中式VCS相比的优点),但是我想不出一个相反的例子-一些任务(这一点很重要,并且在程序员中很常见)工作流程),Subversion比Git更好。 我从中得出的唯一结论是,我没有任何数据-并不是说Git更好,等等。 我的猜测是存在这样的反例,因此是这个问题。

14
为什么每个人都集中使用Git?
我过去的两家公司都使用Git进行版本控制。据我所知,似乎有90%的公司使用Git而不是其他版本控制系统。 Git的最大卖点之一就是它是去中心化的,即所有存储库都是平等的。没有中央资料库/真相来源。这是Linus Torvalds所倡导的功能。 但是似乎每个公司都以集中方式使用Git,就像一个公司会使用SVN或CVS。人们总是从服务器上(通常是在GitHub上)获得一个中央存储库。我从未见过或听说过(以我有限的经验)人们以真正去中心化的方式使用Git,即按自己认为合适的方式推和拉到其他同事的存储库。 我的问题是: 人们为什么在实践中不使用分布式工作流程? 以分布式方式工作的能力对现代版本控制是否甚至很重要,还是听起来不错? 编辑 我意识到我在最初的问题中没有理解正确的语气。听起来好像我在问,当分布式版本控制系统(DVCS)如此明显地优越时,为什么有人会集中工作。实际上,我想说的是,我对DVCS完全没有任何好处。然而,我经常听到人们鼓吹它的优越性,而现实世界似乎同意我的观点。

6
在git存储库中的单个或多个项目之间进行选择?
在git我们已将大多数项目模块化的环境中,我们面临着每个存储库一个项目或每个存储库设计问题多个项目的问题。让我们考虑一个模块化项目: myProject/ +-- gui +-- core +-- api +-- implA +-- implB 今天,每个存储库有一个项目。它给了自由 release 个别组件 tag 个别组件 但这对于branch组件也很麻烦,因为分支通常api需要和中的等效分支core,并且可能还有其他组件。 鉴于我们希望使用release单个组件,我们仍然可以通过每个存储库设计利用多个项目来获得类似的灵活性。 有哪些经验?您如何/为什么解决这些问题?

12
是否将诸如API密钥之类的秘密信息保留在源代码控制之外的策略?
我正在一个网站上工作,该网站将允许用户使用来自Twitter,Google等的OAuth凭据登录。为此,我必须在这些提供商处注册并获得我拥有的超级秘密API密钥用誓言保护身体的各个部位。如果我的钥匙结了,那部分就被拉了。 API密钥必须随我的源一起传送,因为它在运行时用于执行身份验证请求。就我而言,密钥必须存在于应用程序中的配置文件中或代码本身中。当我在一台计算机上进行构建和发布时,这不是问题。但是,当我们将源代码管理混为一谈时,事情就会变得更加复杂。 因为我是个贱人,所以我更喜欢在云或GitHub中使用免费的源代码控制服务,例如TFS。这给我带来了一个小难题: 当我的API密钥在代码中并且我的代码可在公共存储库中使用时,如何保持身体完整? 我可以想到许多方法来解决此问题,但是没有一种方法令人满意。 我可以从代码中删除所有私人信息,并在部署后重新编辑。实施起来会很痛苦(我不会在很多方面详述),并且不是一种选择。 我可以加密它。但是,由于我必须解密它,因此任何有消息来源的人都可以弄清楚该怎么做。无意义。 我可以支付私人来源控制的费用。哈哈j / k花钱了吗?请。 我可以使用语言功能将敏感信息与我的其余源代码隔离开,从而使它不受源代码控制。这就是我现在正在做的事情,但是如果错误地检查机密文件,很容易搞砸。 我真的在寻找一种有保证的方式,以确保我不会与世界共享我的私人信息(除了在手套上),这将通过开发,调试和部署而流畅地运行,并且也非常安全。这是完全不现实的。 那我该怎么办呢? 技术细节:VS2012,C#4.5,源代码管理将是TF服务或GitHub。当前使用分部类将敏感键拆分到一个单独的.cs文件中,该文件不会添加到源代码管理中。我认为GitHub可能具有优势,因为.gitignore可以用于确保不检入部分类文件,但是我之前已经搞砸了。我希望有一个“哦,常见的问题,这就是你的做法”,但我可能不得不满足于“没有那么多的吸引力”,:/

10
图像应该存储在git存储库中吗?
对于使用Git和Github作为版本控制的分布式团队,图像也应该存储在git存储库中吗? 在大多数情况下,图像不会改变。包含它们的文件夹只会随着添加图像的大小而增加。令人担忧的是,随着时间的推移,图像文件夹可能会通过合并大图像或仅合并其中的许多图像而变得很大。 这是最佳做法吗?还有什么其他方法可以共享分布式团队可以轻松访问的项目中所需的二进制文件?

4
git的两阶段提交过程(登台)有什么好处?
我正在学习git,我注意到它有两步提交过程: git add <files> git commit 第一步是将修订内容放入所谓的“临时区域”或“索引”。 我感兴趣的是为什么要做出此设计决定,其好处是什么? 另外,作为git用户,您可以这样做还是只使用git commit -a? 我问这个问题,因为我来自不具备此功能的bzr(集市)。

30
对于一家小公司(15个开发人员)来说,不使用托管的源代码/版本控制是否很不寻常?[关闭]
这并不是一个真正的技术问题,但是这里还有一些其他有关源代码控制和最佳实践的问题。 我工作的公司(将保持匿名)使用网络共享来托管其源代码和发布的代码。开发人员或管理人员的责任是根据源代码是否已发布以及版本和内容将其手动移动到正确的文件夹中。我们围绕着记录文件名和版本以及更改内容的地方散布着各种电子表格,并且一些团队还在每个文件的顶部放置了不同版本的详细信息。每个团队(2-3个团队)在公司内部的做法似乎有所不同。可以想象,这是一个有组织的混乱-有组织,因为“正确的人”知道他们的东西在哪里,但是却一团糟,因为它们完全不同,并且依赖于人们随时记住要做的事情。 一段时间以来,我一直在努力寻求某种托管源代码控制,但在公司内部似乎无法获得足够的支持。我的主要论据是: 我们目前很脆弱;在任何时候,任何人都可能忘记执行我们必须执行的许多发布操作之一,这可能意味着未正确存储整个版本。如有必要,可能需要数小时甚至数天的时间才能将版本拼凑在一起 我们正在开发新功能以及错误修复,并且由于某些工作尚未完成,因此常常不得不延迟发布其中一个。我们还必须强迫客户采用包含新功能的版本,即使他们只想修复错误也是如此,因为我们实际上只在开发一个版本。 我们遇到了Visual Studio问题,因为多个开发人员正在同时使用相同的项目(不是相同的文件,但是仍然会引起问题) 只有15个开发人员,但我们的工作方式有所不同。我们都必须遵循一种标准的全公司范围的方法,这会更好吗? 我的问题是: 如此规模的小组没有源代码管理是正常的吗? 到目前为止,我仅获得了没有源代码控制的模糊原因- 考虑到上述信息,您认为哪些原因对于不实施源代码控制可能是有效的? 我可以将更多的源代码控制理由添加到我的武器库中吗? 我主要是想了解为什么我受到如此多的抵制,所以请诚实地回答。 我将给我相信采用最平衡方法并回答了所有三个问题的人的答案。 提前致谢

2
Git分支和标记最佳实践
我目前正在通过阅读Pro Git学习使用Git。现在,我正在学习分支和标签。我的问题是什么时候应该使用分支,什么时候应该使用标签? 例如,假设我为项目的1.1版创建了一个分支。完成并发布此版本后,是否应该离开分支以标记发布版本?还是应该添加标签?如果添加标签,是否应该删除版本分支(假设它已合并到master或其他分支中)?

9
在主分支上维护数百个定制分支
当前,我们在共享存储库中为我们的PHP应用程序提供了一个主分支。我们有500多个客户是我们的软件的订户,其中大多数人针对不同的目的进行了一些自定义,每个客户都在一个单独的分支中。定制可以是不同的文本字段名称,全新功能或模块或数据库中的新表/列。 我们面临的挑战是,当我们维护这数百个定制分支并分发给客户时,我们会不时提供新功能并更新我们的主分支,并且我们希望将主分支更改推送到自定义分支以便更新他们到最新版本。 不幸的是,这通常会导致自定义代码中发生许多冲突,并且我们花费大量时间遍历每个分支来解决所有冲突。这是非常低效的,我们发现解决这些冲突时并不少见的错误。 我正在寻找一种更有效的方法来使我们的客户端发行分支与master分支保持最新,这将减少合并过程中的工作量。

6
如何使用Git实现数字版本控制方案?
我的组织正在考虑从SVN迁移到Git。反对搬迁的一种论据如下: 我们如何进行版本控制? 我们有一个基于NetBeans平台的SDK发行版。由于SVN修订版是简单的数字,因此我们可以使用它们来扩展我们的插件和SDK构建的版本号。转移到Git时如何处理? 可能的解决方案: 使用Hudson的内部版本号(问题:您必须检查Hudson才能将其与实际的Git版本相关联) 手动升级版本以保持夜间稳定(问题:学习曲线,人为错误) 如果其他人遇到了类似的问题并解决了该问题,我们将很乐意听听如何解决。

23
为什么Git这么炒作?…而其他人不?[关闭]
近年来,围绕Git的大肆宣传。每个人都知道Git,没人知道替代方案。 像Mercurial这样的其他产品似乎并未引起注意。两者均于2005年发布,并提供类似的功能。此外,通常认为Mercurial更易于使用,更直观,并且长期以来具有更好的UI。因此,可以假定这将是一种流行的替代方法,特别是对于那些刚开始使用分布式版本控制的人。然而,对于大多数人来说,这似乎并不为人所知,与Git的成功相当不同。 这篇文章的重点是试图更好地理解这种现象。 Git如何获得蛋糕的全部?他们是否以某种方式使用了更好的营销?是因为它的社区更……糟糕……“冗长”吗?是因为“ Linus”这个名字吗?是因为它的怪异形象吗? 你怎么看?

7
我的办公室希望无限分支机构合并为政策;我们还有什么其他选择?
我的办公室正在尝试弄清楚我们如何处理分支拆分和合并,但是我们遇到了一个大问题。 我们的问题是长期的分支机构-在这种情况下,您需要几个人在与分支机构分离的分支机构中工作,我们会发展几个月,而当我们达到一个里程碑时,我们就会将两者同步。 现在,恕我直言,处理此问题的自然方法是将侧枝压缩为单个提交。master不断进步;应当-我们并没有追溯数月的并行开发master历史。而且,如果有人需要更好的分辨率来解决分支机构的历史,那么当然,它仍然存在-它不在master,而是在分支机构中。 问题出在这里:我只使用命令行工作,而我团队的其他成员则使用GUIS。而且我发现GU​​IS没有合理的选项来显示其他分支的历史记录。因此,如果您达成一个壁球承诺,说“此开发已从分支被压缩XYZ”,那么查看其中的内容将是巨大的痛苦XYZ。 在SourceTree上,据我所知,这非常令人头疼:如果您正在上master,并且想要查看的历史记录master+devFeature,则需要签master+devFeature出(触摸每个不同的文件),否则滚动浏览一个日志,该日志并行显示您存储库的所有分支,直到找到正确的位置。祝您好运。 我的队友很正确地不想拥有如此难以接近的发展历史。因此,他们希望合并这些大型的,长期的开发分支,并始终使用合并提交。他们不需要任何无法从master分支立即访问的历史记录。 我讨厌那个主意;这意味着平行发展历史的无尽,不可逾越的纠结。但是我没有看到我们有什么选择。而且我很困惑。这似乎阻碍了我对良好分支机构管理所了解的大多数知识,如果找不到解决方案,这将使我不断感到沮丧。 除了不断地将分支机构与合并提交合并到主分支之外,我们这里还有其他选择吗?还是有一个原因导致不断使用merge-commits并不像我担心的那样糟糕?

18
什么时候应该首次提交源代码控制?
我从不知道什么时候项目足够远,可以首先提交到源代码管理。我倾向于推迟提交,直到项目“框架完成”为止,然后我主要提交功能。(我还没有做过足够大的个人项目,以至于没有一个太大的核心框架。)我觉得这不是最佳实践,尽管我不确定会出什么问题。 例如,假设我有一个包含单个代码文件的项目。要使该项目具有极其基本的功能(1个或2个功能),将需要大约10行样板代码和100行。我应该首先签入: 空文件? 样板代码? 第一个功能? 在其他时候? 另外,在特定地点办理登机手续的原因是什么?

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.