Questions tagged «version-control»

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


3
BitBucket-有什么收获?(TANSTAAFL,对吧?)
BitBucket的功能和定价(最多可免费使用5个用户)让我想知道捕获的是什么……毕竟没有免费的午餐。 除了一个英俊的男人(根据服务条款)自由地包含在宣传材料中之外,BitBucket还可以从我的无偿参与中得到什么?

9
对我而言,在开源项目中开始使用版本控制的最佳方法是什么?
有人建议,由于项目的规模和缺乏技能,我将其开源,因此我签出了Google Code,开始制作一个项目,现在问我是否要让该项目具有Git,Mercurial或Subversion?代码托管。 我什至不知道什么是代码托管,而搜索只是让所有这些问题之间的争论让我更加困惑,而且由于Google Code询问我想要哪种类型的许可证,这种情况甚至变得更糟。 我想我不太了解开放源代码的真正含义,有人能大致解释一下这是什么吗?非常感激。 编辑在这三个版本的代码托管上,已经收到了很多不错的答复,但是我认为我无法传达一个真正的问题:基本上我不知道这个开源的东西是如何工作的,为什么还要在这样的地方托管代码? ?这是否意味着我必须从当前托管中删除该站点,或者这是一种完全不同的托管类型?当我使网站开源时会发生什么,我拥有什么权利,我放弃了什么权利。它是如何工作的,人们只是来免费向我扔代码吗?也许这些是愚蠢的问题,如果是这样的话,那么我想我需要愚蠢的答案,除了共享代码的概念外,我真的不知道什么是开源。

4
先进的颠覆技术,我缺少什么?
大约9个月前,我开始使用SVN,至少可以说它已经改变了游戏规则。虽然,我仍然感到迷茫。我觉得我还需要利用很多东西来真正加强我的应用程序开发。 例如 我希望能够将任何易失性/重大更改隔离到某种“子存储库”或某些内容中。我发现重大更改妨碍了非常紧急的次要错误修复。如何推送一个简单的更新而不推送不完整或损坏的代码?

9
对于一般公司的大型项目,我需要什么源代码控制?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 我知道Git非常适合开源项目。但是我想知道:对于一个有20位程序员从事1年项目的公司,哪个源代码控制系统是可取的?从我听到的声音中,Git使用拉动;需要经过别人来在主干中进行更改会不会比您期望的要少?尤其是当每个人都在同时工作时? 这只是我想知道的一个例子。我知道如何使用SVN,但是即使在上一份工作中,我们也没有在项目中使用SVN,因为所有操作都是在PHP中完成的,并且通常是独立的1周项目。我只是将SVN用于我的本地代码,而无需与其他人一起使用。 那么什么是好的源代码控制,特别是为什么这样做有好处呢?

3
保持秘密不受源代码控制-我们只是在解决问题吗?
我继承了一些项目,其中秘密位于App.config和类似文件的源代码控制中。幸运的是,它不是公共存储库,因此风险并不像以前那样严重。我正在寻找更好的方法来管理此问题,例如Azure KeyVault。(但我不希望这个问题专门针对该解决方案。) 总的来说,我们不只是解决问题吗?例如,使用Azure KeyVault,应用程序ID和应用程序秘密成为您不受源代码控制的事情。这是一个不幸的典型例子,说明这种情况容易出错。其他方法最终都变得相似,其中包含您必须保护的API密钥或密钥库文件。 在我看来,像Azure KeyVault这样的产品没有比将您的秘密保存在单独的配置文件中并确保它位于您的.gitignore或等效文件中更好,并且毫无意义地更复杂。该文件必须根据需要通过边信道共享。当然,人们可能会不安全地将其通过电子邮件相互发送给对方... 有没有一种方法可以管理秘密,而不仅仅是解决问题?我相信这个问题有一个明确定义的答案。以此类推,如果我要问HTTPS不仅能解决问题,答案是CA密钥随您的OS一起分发,而我们信任它们是因为我们信任OS的分发方法。(我们是否应该单独提出一个问题...)

5
存储与代码项目关联的文档的最佳方法是什么?
我们有很多与软件开发相关的文档。其中包括需求,设计文档,外部PDF,客户文件,测试说明等内容。目前,这些文档分散在各处(Wiki,“网络上的某个地方”,本地开发人员的硬盘(!),甚至更糟的地方)。 跟踪它们的最佳方法是什么?由于我们使用Visual Studio(2010)进行开发,并且该项目上实际上没有任何非开发人员,所以我认为将它们存储在VS“解决方案”中是一个好主意,这将使他们由源代码控制,并由所有开发人员普遍访问。 但是,VS似乎并不是专门为实现此目的而构建的。如果您编辑任何文档文件,即使使用构建属性“无”,“请勿复制”设置的文档文件,VS也必须先重建软件,然后才能再次运行。无法在解决方案中创建“文档项目”。(为此,我们使用一个空的C#项目)。Visual Studio和Word / Excel Flat不能很好地进行源代码控制。您无法查看签入的文件,然后决定进行更改,而无需先关闭文件,进入项目并在进行更改之前手动将其检出。充其量是缓慢而乏味的。 无论如何,这是我们团队能提供的最好的解决方案,但我真的希望我有一个更好的(免费)解决方案。

2
将我们的代码分解为可重用的位之后,我们如何测试和部署?
我们从一个开发人员开始,然后是一个包含我们所有代码的svn存储库: ^/foo/trunk/module-a ^/foo/trunk/module-b ^/foo/trunk/module-b/submodule-b1 ^/foo/trunk/website1 (当时是一个很大的进步)。在这有了长足发展的机会之后,我们开始遇到循环依赖项,缓慢的测试套件以及重用代码的一般困难的问题(因为例如website1的功能集已潜入其他通用模块-a中)。 想要对代码库进行模块化,并希望我们不久就迁移到git(并且已经读过git不喜欢svn mega-repos的地方),我们已经过渡到了更精细的结构: ^/module-a/trunk/ ^/module-b/trunk/ ^/module-b/trunk/sumbmodule-b1 ^/earlier-sub-sub-sub-module-c/trunk etc. (about 120 such modules) 从概念上讲,这很棒。更多的模块化代码,更快的测试套件,更容易记录的文档,等等。我们开源了一些更通用的组件,并使所有模块都可以pip安装(pip install -e .用于将它们安装在developmentvirtualenv中)。 我们创建了一个^/srv/trunk存储库,其中包含运行时环境的文件夹结构。^/srv/trunk/lib用于模块,/srv/trunk/src用于的其余部分^/foo/trunk,^/srv/trunk/www用于网站等。 最后(从我很久以前与perforce合作的[ https://www.perforce.com/perforce/r12.1/manuals/cmdref/client.html]中吸取灵感),我们创建了一个“ vcs-提取”文本文件,其中列出了所有相关的存储库以及应将其检出到开发环境中的位置,并提供了相应的命令来执行此操作。例如vcs-fetc行: svn srv/lib/module-a ^/module-a/trunk 会导致(第一次) cd /srv/lib && svn co ^/module-a/trunk module-a 或(之后) cd /srv/lib/module-a && svn up 同样适用于github repos(我们自己的和更改/未更改的供应商软件包)。 我们使用了相同的vcs-fetch流程来创建生产环境,但是我们很快发现,在进行vcs-fetch之后,我们无法知道哪个版本在prod中运行。 对于大型仓库,我们可以在从主干更新产品之前记下修订号,然后回去就很简单svn -r nnn up .了。使用svn和git中的代码(以及hg中的一个模块)以及〜120个仓库,如何执行此操作并不明显。 …

4
如何确定源代码管理中是否有有用的已删除代码?
因此,我正在阅读此问题,是否应该删除未引用的代码? 一些建议是删除未引用的代码,因为该代码在源代码控制中以供将来参考。 您如何组织此删除的代码,以便您(或其他程序员)的更高版本以后可以找到它?您是否制作了一个单独的分支或以某种方式在源代码管理中对其进行了标记? 以前我从未从源代码控制中恢复已删除的代码,我只是将其用于跟踪仍在运行的代码的更改。在包含其他人的实验性工作之前,我已经引用过分支,所以也许这是标记在主干中删除的有趣代码段的好方法吗?

1
网站的版本控制:开发/生产前端文件
我正在尝试一种更好的方式来控制我们的网站项目的版本。请记住,我只是一个前端开发人员,所以我对VCS并不了解。 工作流程在变化,过去的版本控制习惯变得过时。主要问题是每个网站都有2个前端文件阵列。 开发环境(较少的文件,未压缩的js,图像等)。构建环境“变得糊涂”(一切压缩且人类无法读取)。 但是您不能出售带有源文件的网站。好吧,感觉不太正确。 有两个解决方案的解决方案:一个构建,一个开发,并用gulp发送dev文件到构建目录。但是,对于小型公司而言,维护起来很麻烦,我认为这不是那么好。它创建了很多回购协议,人们不得不管理多个回购协议,有时甚至需要一个svn回购协议,都会出现问题。 因此,还有一种解决方案,即拥有1个repo:同一svn中的源文件和prod文件。但是,当网站从本地开发服务器转到生产服务器时,需要删除源文件(因此,根据其位置,开发或生产,单个存储库中有不同的文件。)。据我所知不好 关于版本控制系统,管理gulp前端工作流的正确方法是什么?

2
Git登台:什么时候登台?如果事后修改该怎么办
我对Git广泛领域并不陌生。我已经阅读了该手册并一直在练习,但是我对手册的某些方面感到困惑,在搜索后无法弄清。 我很好奇: 在项目中(首次提交后),何时才是登台源文件的恰当时机?就在提交之前?在添加/删除或修改之后吗? 如果文件在两次提交之间暂存,然后被修改,那么Git会发生什么?它是否需要关注内容声明时的内容更改以及更改后的内容? 如果我创建一个新文件,暂存它然后再删除它,为什么Git要求我使用“ -f”标志,而简单的“ git -rm file.ext”不起作用? 我已经阅读了“阶段意味着什么”以及有关Git的手册和其他教程的其他各个主题,但是正如我所说,我仍然不明白上述问题。 因此,如果可以的话,请用自己的话语和例子回答问题,以便我更好地理解它。 谢谢。

5
如何管理非开发人员检查本地化字符串的任务?
在.NET Framework中,本地化的字符串位于XML文件(或多个文件)中。这些文件是项目的一部分,并且像任何其他源代码文件一样被提交到源代码管理。通常,Visual Studio用于将这些文件显示为表格并编辑本地化的字符串。 我在一个小组中研究应该具有多语言界面的产品。 作为开发人员,鉴于翻译可能不准确,我用两种语言起草了本地化的字符串, 团队中的另一个人(非开发人员)以两种语言查看内容,并在需要时进行更正。 当前的问题是,非开发人员既不会使用源代码控制,也不会使用IDE,因为这对于该人员来说既麻烦又困难(对于非开发人员来说版本控制很困难)。 另一种解决方案是我将本地化字符串导出为Excel文件,等待此人检查Excel,然后重新导入修改后的字符串。需要说明的是,我可能正在创建其他字符串,重命名现有的字符串等,这使得很难将本地版本与经过审核的字符串进行区分。 该怎么办? 在其他团队中如何发生?

2
如何为项目构建git仓库?
我正在为Drupal开发内容同步模块。有一个服务器模块,它位于网站上,并通过Web服务公开内容。还有一个客户端模块,它位于不同的站点上,并定期提取和导入内容。 服务器在Drupal 6上创建。客户端在Drupal 7上创建。将需要Druapl 7版本的服务器。明年发布后,客户端和服务器都需要Drupal 8版本。 我对git和源代码控制还很陌生,所以我想知道设置git存储库的最佳方法是什么?如果是每个实例都有一个单独的存储库,即: Drupal 6 server = 1 repository Drupal 6 client = 1 repository Drupal 7 server = 1 repository Drupal 7 client = 1 repository etc 还是有一个服务器存储库和一个客户端存储库,然后为每个Drupal版本创建分支会更有意义? 目前,我有2个存储库-一个用于客户端,另一个用于服务器。

7
测试时间长时如何保持行李箱稳定?
我们提供三套测试套件: 一个“小型”套件,只需几个小时即可运行 耗时数小时的“中型”套件,通常每晚(每晚) 一个“大型”套件需要一周以上的时间才能运行 我们也有很多较短的测试套件,但在这里我不关注它们。 当前的方法是在每次提交到干线之前运行小型套件。然后,中型套件每天晚上运行,如果早晨发现它失败了,我们将尝试找出应归咎于昨天提交中的哪个,回滚该提交,然后重试测试。对于大型套房,只执行每周一次而不是每晚一次的类似过程。 不幸的是,中型套件确实经常失败。这意味着后备箱通常是不稳定的,当您要进行修改和测试时,这非常烦人。这很烦人,因为当我从后备箱中退房时,我无法确定它是否稳定,并且如果测试失败,我也无法确定它是否是我的错。 我的问题是,是否存在一些已知的方法来处理此类情况,以使行李箱始终处于最佳状态?例如:“提交到一个特殊的预提交分支,该分支将在每夜经过时定期更新中继”。 它是像SVN这样的集中式源代码控制系统还是像git这样的分布式源代码控制系统有关系吗? 顺便说一下,我是一名初级开发人员,但更改功能的能力有限,我只是想了解是否有办法解决我遇到的这种痛苦。

2
在开始新开发之前或标记发行版之前,请突出版本,哪个更好?
一些项目在启动新开发项目之前会更改版本,而其他项目在标记发布时会更改版本。 哪种方法更好? 如果在新阶段开始时未更改版本号,则开发人员可能会忘记更改它,而只是发布程序。 如果在发布标记之前更改了版本号,则2个版本号(标记和Makefile / AssemblyInfo.cs)不匹配。 git describe 如果当前版本是在v1.2.3.4之后,则可能会给您v1.2.3.4-15-g1234567,但您已经将文件更改为具有v1.2.3.5

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.