Tag: dvcs

Mercurial:在一个回购合并分支之间的一个文件

当我在Hg repo中有两个分支时,如何合并只有一个文件与另一个分支,而不是所有其他文件从变更集合? 是否有可能只合并某些文件,而不是整个变更集?

是否使用中央存储库违背GIT的目的?

如果你的企业环境中有很多人在某个特定的应用程序上工作,那么这个分布式版本控制系统是否有官方的中央存储库呢? 有时候,我很难理解分布式版本控制系统的概念,比如企业环境中的GIT 。 如果您没有中央存储库,那么是不是PITA来确定谁拥有最新的更新版本,谁拥有需要抓取的特性或错误修复function等等。 它是否击败了GIT的目的,以类似于SVN的方式使用它,每个人都推送一个中央存储库? 每当我想到做到这一点,我就觉得我错过了一切。 有人能教导我吗?

有没有办法在Mercurial中删除单个文件的历史logging?

我想我已经知道了这个答案,但是我想我会问: 我们有一个文件被添加到一个Mercurial存储库中,里面有敏感信息。 有没有办法删除该文件及其更改历史logging,而不删除整个回购?

什么使DVCS合并变得容易?

我在软件Joel上读到: 使用分布式版本控制,分布式部分实际上不是最有趣的部分。 有趣的部分是这些系统根据变化而不是版本来思考。 和HgInit : 当我们需要合并的时候,Subversion会试着去查看这两个版本,我的修改过的代码和你修改过的代码,然后试图猜测如何把它们合并成一个大的邪恶混乱。 它通常会失败,产生页面和页面的“合并冲突”,这并不是真正的冲突,只是Subversion未能弄清楚我们做了什么的地方。 相比之下,当我们在Mercurial单独工作时,Mercurial正在忙于保持一系列的变化。 所以,当我们想要将我们的代码合并在一起时,Mercurial实际上拥有更多的信息:它知道我们每个人都改变了什么,可以重新应用这些改变,而不仅仅是看最后的产品,并试图猜测如何把它一起。 通过查看SVN的存储库文件夹,我有一种印象,Subversion将每个修订版保持为变更集 。 而据我所知,Hg正在使用变更集和快照,而Git纯粹是使用快照来存储数据。 如果我的假设是正确的,那么肯定还有其他方法可以使DVCS中的合并变得容易。 那些是什么? *更新: 我对技术视angular更感兴趣,但非技术视angular的答案是可以接受的 更正: Git的概念模型完全基于快照。 快照可以作为其他快照的差异存储,差异仅仅是为了优化存储。 – RafałDowgird的评论 从非技术angular度来看: 这仅仅是文化上的问题:如果合并困难,DVCS根本无法工作,所以DVCS开发者投入大量的时间和精力来使合并变得容易。 CVCS用户OTOH被用于糟糕的合并,所以开发人员没有动力使其工作。 (为什么当你的用户给你同样好的东西给别人一些废话时,让事情变好?) … 回顾一下:DVCS的整个目标是拥有许多分散的存储库,并不断地将变化合并到一起。 如果没有合并,DVCS根本就没用。 然而,CVCS仍然可以在糟糕的合并下生存下来,特别是如果供应商能够限制用户避免分支。 – JörgW Mittag的回答 从技术angular度来看: 录制真正的历史DAG确实有帮助! 我认为主要的区别在于CVCS并不总是把一个合并作为一个变更集与几个父母一起logging,丢失了一些信息。 – tonfa的评论 因为合并跟踪 ,以及每个修订版都知道其父母的更基本的事实。 当每次修改(每个提交),包括合并提交,都知道它的父项(对于合并提交,意味着拥有/记住多个父项,即合并跟踪),可以重build修订版本的图(DAG = Direct Acyclic Graph)历史。 如果你知道修订图,你可以find你想要合并的提交的共同祖先。 当你的DVCS知道如何find共同的祖先时 ,你不需要提供它作为参数,例如在CVS中。 。 请注意,可能有两个(或更多)提交的不止一个共同的祖先。 Git利用所谓的“recursion”合并策略,将合并基础(共同祖先)合并,直到剩下一个虚拟/有效的共同祖先(在一些简化中),并且可以做简单的三向合并。 – JakubNarębski的回答 检查一下在Git中如何和/或为什么合并比SVN更好?

我如何退出Mercurial的合并,然后与该分支重新合并?

我有两个分支,默认和分支1。 我们团队中的一个人错误地将branch1与默认值合并在一起。 branch1中的内容还没有准备好与默认合并(它包含了对构build和部署环境的重大修改)。 我们做了一个'hg backout'的实验,支持合并(不确定这是否正确)。 然后,从branch1的更改被删除默认情况下,这是很好的 – 但我们不能与branch1重新合并。 我们应该如何解决这个问题?

描述使用版本控制(VCS或DVCS)的工作stream程

我想在使用vcs或dvcs时学习其他人的工作stream程。 请描述您的策略来处理以下任务: 实现一个function 修复错误(在开发和部署应用程序过程中) 代码审查 重构代码(后代码审查) 整合补丁 发布你的应用程序的新版本(桌面,网页,手机,你会不同地对待他们?) 随意组织你的答案没有按任务分组,但按照你认为相关的任何分组,但请由VCS / DVCS组织(请不要混合它们)。 谢谢。

如何使用git-svn保持svn:external最新?

作为SVN回购处理我的存储库,我得到: svn co http://myrepo/foo/trunk foo … foo/ bar/ baz/ -> http://myrepo/baz/trunk 把它作为一个Git回购,我得到: git svn clone http://myrepo/foo –trunk=trunk –branches=branches –tags=tags … foo/ bar/ 我可以将baz克隆到我的本地计算机并添加一个符号链接,但这只是一个破解。 有没有办法让git svn rebase在更新其他所有内容时自动拉入这些更改,就像svn up一样?

NuGet和分布式版本控制(DVCS)

我想知道是否有可能使用nuget只在版本控制中存储对所需软件包的引用(只有package.config并忽略软件包文件夹)。 有没有办法告诉nuget(重新)下载各种package.config文件中的所有引用的包? 或者可以放到构build脚本中的类似东西。 更新: 似乎我不是唯一一个请求这个function的人: 看到这个工作项目 (感谢PHeiberg的提示) 更新2: NuGet现在具有这个function。 有关详细信息,请参阅使用NuGet而不提交包到源代码pipe理 。 剩下的就是将packages目录添加到.gitignore或者你的VCS的一些等价物中(如果你在版本库的根目录下使用git, /packages/将会诀窍)。

我怎么git重置 – 硬头上Mercurial?

我是一个尝试使用Mercurial的Git用户。 这是发生了什么:我做了一个恢复我想要恢复的变更集。 这创造了一个新的头,所以汞指示我合并(回到“默认”,我假设)。 合并后,它告诉我,我仍然不得不承诺。 然后我注意到在解决合并冲突时我做错了什么,并决定我希望拥有和hg backout之前一样的东西,也就是说,我希望这个无限的合并消失。 在Git上,这个无用的东西将在索引中,我只是做一个git reset –hard HEAD清除,但从我读过的,索引不存在于Mercurial。 那么我怎么退出呢?

为什么可能git日志不显示移动的文件的历史,我能做些什么呢?

我已经使用git mv重命名了一些文件,使用了git stash ,快速浏览了HEAD(没有改变它),然后用git stash pop以重新获得全部内容。 我的举动已经从提交列表中消失了,所以我用git rm重新编写了它们,提交消息声称git已经发现重命名是重命名。 所以我没有想到更多。 但现在,提交后,我无法得到移动的文件的历史! 下面是git所说的关于提交的问题: ~/projects% git log –summary commit de6e9fa2179ae17ec35a5c368d246f19da27f93a Author: brone Date: Wed Dec 8 22:37:54 2010 +0000 Moved R_DebugUI into runtime delete mode 100644 test/R_DebugUI_iOS.h delete mode 100644 test/R_DebugUI_iOS.m create mode 100644 system/runtime/src/R_DebugUI_iOS.h create mode 100644 system/runtime/src/R_DebugUI_iOS.m <<snip older commits>> ~/projects% 我现在正试图获取这些移动文件的历史logging,所以我可以看看旧版本,但是我没有得到任何有用的东西: ~/projects/system/runtime/src% git log –follow […]