Questions tagged «version-control»

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

4
专业的应用程序开发人员如何使用版本控制系统(如GIT和Subversion)?
我是一名初学者开发人员,从一开始我就一直在想,如何使用诸如GIT和Subversion之类的专业工具(我对这些工具没有很好的了解)来满足他们项目的需求。如果他们确实使用它,我将如何设置类似的东西? 我的申请不是很大,我还没有加入团队,这对我有很大帮助吗? 这个网站上有关于如何使用工具的问题,但是我需要初学者的支持。

8
在集中版本控制中,经常进行更新是否总是一件好事?
假如说: 您的团队正在使用集中式版本控制。 您正在开发一个较大的功能,该功能可能需要几天才能完成,并且在此之前您将无法提交,因为这会破坏构建。 您的团队成员每天都会做一些事情,这些事情可能会更改您正在处理的某些文件。 由于这是集中的版本控制,因此您将必须在某个时候更新本地结帐:至少在提交新功能之前至少一次。 如果您在提交之前仅更新一次,那么由于您的队友进行的许多其他更改可能会导致很多冲突,这可能会一次解决所有冲突。 或者,您可以经常进行更新,即使每天有一些冲突需要解决,也应该一点一点地变得更容易。 您是否愿意经常更新始终是个好主意?

3
有什么理由不使用多个版本控制系统?
我正在一个项目中,该项目使用GIT作为主干,官方分支和大多数子项目/非官方分支的主要版本控制系统。因此,我想让自己的分支机构使用GIT,以允许其他社区使用他们所知道的系统访问我的分支机构。 但是,我正在研究项目的一部分,该部分与官方分支和非官方分支都重叠,以及一些永远不会进入主干的补丁-因此,我需要能够将我的补丁分开,以便将所有补丁都用于我的分支和选择性补丁将在树干中使用。这自然倾向于使用Mercurial队列。 有什么理由不能将Mercurial用于我自己的本地资源库,而是将全部内容推送到GIT和Mercurial托管资源库?或者更确切地说,有没有充分的理由不这样做,我敢肯定这是可能的。

2
从项目初期就使用VCS的规范方法是什么?
背景 git过去,我曾经使用VCS(主要是)来管理许多现有项目,并且效果很好。通常,对于现有项目,我会检入对代码进行的所有更改,以优化或更改整体功能(您知道我的意思是,在适当的步骤中,并不是我更改的每一行)。 问题 我没有太多练习的一件事是创建新项目。我正在启动一个自己的新项目,该项目可能会变得很大,但是我发现在前几天/几小时/几周/整个时期内,还有很多事情要做,并且有很多变化直到产品以其最基本的形式实际起作用为止。 与现有项目一样,我在流程的每个步骤中是否都需要检查?我没有用所做的更改破坏项目,因为它尚无法正常工作。当我离开计算机时,每天结束时我只是一直在使用VCS作为备份。 我最初的几次提交是诸如“适当的基本目录结构”和“已创建数据库表”之类的内容。开始新项目时应如何使用VCS?

4
基于便携式存储的版本控制?
我在两台计算机上开发个人项目,而无需使用共享服务器或两者之间的网络连接。 是否有任何通用的版本控制系统可靠地支持将便携式存储设备(例如USB闪存设备)用作共享存储库?

6
将框架运行时存储在源代码控制下是一种好习惯吗?
我知道很多软件商店都将二进制文件置于源代码控制之下。但是,我们的商店开始将整个框架存储在资源库中:DirectX运行时,CUDA,nVidia Optix等。 据说可以简化开发机器的设置(据说,获取最新版本并开始编码)。但是,它极大地膨胀了存储库,并给它带来了不相关的历史负担。 我从未见过这样的用法模式。您认为这是一种好习惯吗? [编辑:]我对源代码控制隔离的第三方二进制文件没有问题。这个问题涉及整个框架运行时,通常包含10多个二进制文件。作为一个极端的示例,请使用Windows SDK(感谢上帝,我们没有保留它在存储库中,但我认为原则上没有区别)。

5
老板对将版本控制系统用于新项目表示怀疑,我还是应该吗?
参见/software/109817/superior-refusing-to-use-subversion 我的问题是相似的,但是这是我的情况下的主要区别: 我们正在使用PHP和网络技术从头开始一个新项目。如果我愿意的话,在开发中不会出现停机时间,因为从一开始我们就会采用它。 我的开发团队包括我和我的老板。我们是一家相对较小的公司的“ IT”部门。 该Web应用程序将完全不使用源代码控制来替换旧版应用程序。由于地域法律要求的差异,决定(在我被雇用之前)决定将应用程序分入每个版本的7个完全独立的目录中。之后,不同的开发人员在不同的时间在不同的地方做不同的事情。好吧,我认为可以在它们之间修补更改,我想这就是我要发布的原因。 我老板的建议,直接从电子邮件中粘贴: 更新应作为软件包提交到​​SUBMISSIONS文件夹中。程序包应包含所有相关文件以及包含更新说明的“ UPDATE.NFO”文件,包含的所有新文件的列表(带有描述)以及所有包含修改详细信息的已修改文件的列表。 更新包应专注于单个元素,而不应偏离其预期目的。代码应设计为模块化的,并尽可能重用。 所有提交的软件包都应在提交后立即安装在每个开发人员的测试环境中。每个开发人员都要审查新添加的内容,并对在生产环境中对其安装的任何疑问发表意见。在将此标准流程更新加载到生产环境之前,至少应保留3个工作日,以进行此审核过程。高优先级更新/修复可以跳过此要求。 发明源代码控制的原因是使所有这些自动化,对吗?我建议颠覆,因为那是我在大学中使用的。老板不喜欢颠覆,因为“它使代码一团糟”(即使用二进制魔术并且不易理解)。我们曾经尝试过一次,但是我认为尝试在Windows上使用它会产生奇怪的小写/大写错误,并且我们无法检出文件。我不知道这仅仅是颠覆还是所有令人反感的源代码控制产品。 那么,我应该对老板提出什么样的论点呢?还是他是对的,有可能会因为一个奇怪的错误而失去我们所有的工作吗? 还是我完全错了?在我的情况下,真的需要源代码控制吗?这是我们正在谈论的主要的关键业务软件,因此毫无疑问,它最终将是巨大的。但是只有2个开发人员(现在)。 另外,如果我不能说服他,我是否有为我自己使用它的任何意义?我说的是实际使用svn的经验非常有限的人;我只知道结帐和提交。源代码控制(可能包括svn以外的其他产品)有哪些功能可以帮助我进行个人开发? 请没有“找另一份工作”的评论。那对辩论没有帮助。

3
Git是如何设计的?
我的工作场所最近改用Git,我一直在(讨厌)它。我真的很喜欢它,它功能非常强大。我唯一讨厌的部分是有时功能过于强大(也许有点简洁/令人困惑)。 我的问题是... Git是如何设计的?只需短时间使用它,您就会感觉到它可以处理其他版本控制系统无法处理的许多晦涩的工作流程。但下面也感觉优雅。又快! 毫无疑问,这部分是莱纳斯的才能。但是我想知道,git的总体设计是基于某种东西吗?我已经阅读过有关BitKeeper的信息,但是有关技术细节的内容很少。压缩,图形,删除修订号,强调分支,隐藏,远程……所有这些都是从哪里来的? Linus真的把这个人赶出了公园,几乎是第一次尝试!一旦您超过了学习曲线,就可以很好地使用它。

4
版本控制中存储的图像的文件命名约定?
我的应用程序有一个存储在版本控制中的图标文件。现在明天我可能决定更改图标。我正在讨论图标文件的两种可能的命名约定: 保持文件名固定,例如application.ico 使文件名反映图像的性质,例如happyface.ico 选项1没有说明文件是什么。它可能会给人一种错觉,即两个完全不同的图像是同一事物的不同“版本”。使用选项2,我不仅必须添加一个新文件并删除旧文件,而且还必须修改资源文件以反映新图标的文件名。 从一个相关但不同的角度来看: 一个带有标题图像的网站。文件名是header.jpg还是Sunrise-family-smiling.jpg? 图像文件名是否应反映其在应用程序中的功能或内容?最佳做法是什么?

8
如何使用VCS正确管理提交,防止功能冲突以及管理依赖关系?
与大型团队合作已成为一个烦人的因素:如何管理签入,防止功能冲突以及通过源代码管理正确管理依赖项? 目前,在我的工作场所中,我们使用TFS 2008,并将在12月初迁移到TFS 2010。首先,任何源代码控制总比没有源代码要好,但是有人发现有什么方法可以防止源代码控制历史中的多次签入和回滚?在实现新功能时,一旦您很高兴地重新合并到中继线中,易失性中继线是最好的解决方法吗? 我真的很想听听其他人的经验,也许还有一些管理源代码管理的最佳实践。

3
存在哪些方法来处理数据库变更管理?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我最近开始在使用Subversion的Web开发中使用版本控制。这对于管理我开发的文件非常有用,但对于我有时需要对数据库进行的更改却无济于事。据我所知,我正在使用的服务器上没有任何数据库管理系统,而且我很可能无法让他们安装任何东西。在这种环境下,管理数据库有哪些选择?

9
Bitbucket和一家小型开发公司
我正在最终将Mercurial用作我们的版本控制系统。对于每个人来说,这都是一笔不小的数目,令人震惊的是,他们从未使用过VCS。经过几个月的漏洞发现之后,他们终于意识到了这一点,现在意识到与使用共享文件夹网络相比,它有多好! 在推广过程中,我正在考虑不同的策略来管理我们的东西,并且我倾向于使用Bitbucket作为我们的“中央”存储库。Bitbucket中的项目将完全是私人项目,每个人都会从那里推而走。 我愿意接受不同的建议,但是有人有类似的设置吗?如果是这样,您遇到了哪些警告?

3
提出SVN的版本控制策略
我要全天候尝试为公司制定版本控制策略。我们目前使用的是SVN,但没有结构-我们基本上只有一个主干,并且只能使用它。最近,开发经理启动了另一个存储库,它充当我们的“标签”,但是由于它不是同一存储库的一部分,而是完全独立的存储库,因此必须与“ trunk”手动合并。实际上,只有一个文件夹,称为“ Dev”(在不同的日期实际上有不同的“ Dev”文件夹,但只有“ Dev”是主要文件夹),在此之下还有其他所有文件夹。所有其他项目。它根本不是按项目组织的,它没有分支/标签/树干或其他任何概念。最初设置的人(已久,当然)似乎根本不知道如何设置SVN,从那以后,没有人会因为担心破坏某些东西而费心地学习如何正确地做事。我们不使用任何类型的CI(不幸的是,也不使用自动化测试)。 首先,我们应该按项目分开吗?例如,我们有:两个ASP.NET网站(非Web应用程序,网站),一个Web服务,一个用于所有表脚本和存储过程的部署文件夹,两个用于外部项目的命令行客户端,这些客户端由网站和具有公用业务对象等的共享文件夹。这些应该是属于自己的带有分支/标签/树干设置的项目,还是应该像这样: dev/ branches/ tags/ trunk/ Site1/ Site2/ WebService/ SharedCode/ 并具有所有分支,并且所有内容都具有整个Dev文件夹的副本?由于我们经常遇到需要在共享代码库和至少一个(通常是两个)网站中进行更改的情况,因此这种方法可能更容易被吞噬。 其次,我们定期向开发服务器和实时服务器发布(按我们的说法)。从我读过的最好的处理方式来看,所有开发都进入了trunk /,分支是“临时的”,用于添加可能影响主干的新功能,而标签用于发布?因此,我们每个月都在推动,我正在开发一个全新的模块。我将分支主干,并将该分支用于我的代码,编写和测试它以及其他内容。模块完成后,我会将其合并回主干(并可能删除分支),而当我们准备进行部署时,我们将对其进行标记(比如说“ May2011”)。如果我们在发布后进行了错误修复,则将在May2011标签中对其进行修复,然后将其合并到主干中(这样,主干也将获得此修复),然后May2011会因修复而再次推出?这是标记的意图吗?

11
我的同事是否应该互相检查源代码控制系统中的代码?
这就是我的故事:我的一位同事用来查看托管到修订系统的所有代码。我并不是说要对他所属零件的变化进行适当的审查。他逐行观看代码文件。每个新文件和每个修改的文件。我感觉就像被监视! 我的猜测是,如果代码已经托管在控制系统中,则至少应该相信它是可行的。我的问题是,也许我太偏执狂了,检查彼此的代码的做法是否很好? PS:我们的团队只有三个开发人员,我担心如果会有更多的开发人员,同事将没有时间审查我们将编写的所有代码。

4
什么是大型任务的良好源代码管理检入策略?
一般规则是保持较小的登机手续并经常办理登机手续。但是有时任务需要对基础框架进行大的更改。然后在完成任务之前签入将中断项目,直到您签入完成的工作。 那么,人们使用什么策略来减少失去工作的风险,或者确定您正在做的事情是错误的方法,然后在删除代码并尝试另一种方法之后改变主意? 如果可以,我将签入已完成的工作的一半注释掉,或者如果它可以编译并且什么都没有使用,我将它们签入。更改越大,我越有可能分支该项目然后合并回去等我一切都恢复正常的时候 如果源控制系统允许,则另一个选择是架子集,它们基本上是小分支。因此,当我完成当天的工作或到达决策点时,我将搁置我的更改,然后,如果发生了灾难性的事情,或者我想回到那个点,我可以。
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.