Tag: dvcs

Mercurial – 恢复到旧版本并从那里继续

我在本地使用Mercurial进行项目(这是唯一一个没有任何其他地方推/拉的回购)。 迄今为止,它有一个线性的历史。 然而,目前我正在做的事情,我现在已经意识到是一个可怕的方法,我想回到这个版本之前,我开始实施它不同的方式。 我对Mercurial中的branch / revert / update -C命令有点困惑。 基本上我想恢复到版本38(目前在45),并有我的下一个承诺有38作为父母,从那里进行。 我不在乎修订版39-45是否永远丢失,或者最终落入他们自己的死胡同里。 我需要哪个命令/一组命令?

使用git版本控制系统locking二进制文件

一年半来,我一直在关注git社区,希望能够摆脱SVN。 一个特定的问题阻碍我是无法locking二进制文件。 在过去的一年中,我还没有看到这个问题的发展。 我知道locking文件违背了分布式源代码控制的基本原则,但是我不明白在二进制文件冲突的潜在可能性时,Web开发公司如何利用git来跟踪源代码和映像文件的变化。 为了实现locking的效果,必须确定一个“中央”存储库。 不pipegit的分布式性质如何,大多数公司将拥有一个软件项目的“中心”存储库。 我们应该能够将文件标记为需要从指定地址的pipe理git存储库进行locking。 也许这是困难的,因为git跟踪文件内容不是文件? 你们有没有经验处理git和二进制文件,应修改之前locking? 注意:它看起来像Source Gear的新开源分布式版本控制项目Veracity,已经locking为其目标之一。

什么是最好的三路合并工具?

Subversion,Git,Mercurial等支持三路合并(结合我的,他们和“基本”版本),并支持graphics工具来解决冲突。 你用什么工具? Windows,Mac OS X,Linux,免费或商业版本,您可以将其命名。 这里有一些我曾经使用或听说过的,只是为了开始谈话: KDiff3 DiffMerge P4Merge 合并 超越比较亲。 (我认识到这有点像最好的差异工具 ,但不同之处在于我明确地关注三路合并工具;例如WinMerge不在列表中。)

将遗留代码从CVS转移到分布式存储库(例如git或mercurial)。 初始库devise需要的build议

介绍和背景 我们正在改变源代码pipe理系统,我们正在评估git和mercurial。 总的代码基础是大约600万行代码,所以不是很大,也不是很小。 首先让我们先简单介绍一下当前版本库devise的外观。 我们有一个完整的代码库的基础文件夹,在这个层次下面有几个不同的上下文中使用的所有sorting模块。 例如,“dllproject1”和“dllproject2”可以看作是完全独立的项目。 我们正在开发的软件是我们所说的configuration器,可以根据不同的客户需求进行无尽的定制。 总的来说,我们可能有50个不同的版本。 但是,他们有一个共同点。 它们都共享一些强制模块(mandatory_module1 ..)。 这些文件夹基本上包含内核/核心代码和通用语言资源等。所有定制可以是其他模块(module1 ..)之间的任意组合。 由于我们目前正在使用CVS,我们在CVSROOT / modules文件中添加了别名。 他们可能看起来像这样: core –a mandatory_module1 mandatory_module2 mandatory_module3 project_x –a module1 module3 module5 core 所以如果有人决定在project_x上工作,他/她可以通过以下方式快速检出所需的模块: base>cvs co project_x 问题 直观地说,将基础文件夹作为单个存储库是错误的。 作为程序员,您应该能够检查出当前正在使用的项目所需的确切代码子集。 你对此有什么想法? 另一方面,将这些模块中的每一个都放在单独的存储库中感觉更为正确。 但是这使程序员难以检查他们需要的模块。 你应该可以通过一个命令来完成这个任务。 所以我的问题是:在git / mercurial中定义别名是否有类似的方法? 任何其他问题,build议,指针,非常欢迎! PS。 我已经search了类似的问题,但并不觉得其中的任何一个100%适用于我的情况。

我怎样才能看到传入的提交git?

可能重复: 使用Git如何find本地和远程之间的修改文件 我怎样才能看到传入的提交git? 或者甚至更好,看看我只是git fetch / git pull编辑? 编辑:澄清这个问题:有人告诉我,为了得到一些修复,我应该从他们的存储库拉。 我的目标是在接受他们之前看看他们的变化是什么。 git pull自动合并,这不是我想要的。 git fetch会抓住它们而不合并,但是我不确定如何查看我刚刚拉入的内容。原始语句的原因是我通常使用Mercurial,其中命令是hg incoming <repo name here> -a git似乎缺less一个类似的命令。

撤消在Git中的一个文件的工作副本修改?

在最后一次提交之后,我在工作副本中修改了一大堆文件,但是我想撤消对其中一个文件的更改,就像将其重置为与最近的提交一样的状态。 但是,我只想撤销只有这一个文件的工作副本的变化,没有别的。 我怎么做?

我如何显示已经上演的变化?

我提出了一些改变, 我怎么能看到下一个提交的所有文件的差异? 我知道git的状态 ,但我想看看实际的差异 – 不仅仅是上演的文件的名字。 我看到了git-diff(1)手册页说 git diff [–options] [ – ] […] 这种forms是查看你所做的相对于索引的变化(下一次提交的登台区域)。 换句话说,差异是你可以告诉git进一步添加到索引,但你还没有。 你可以通过使用git-add(1)来完成这些更改。 不幸的是,我不太明白这一点。 必须有一些方便的一行,我可以创build一个别名,对吗?

git同时推送到多个存储库

我怎样才能使git push不仅推动origin而且还推出另一个远程存储库? 因为git push只是git push origin的别名,我可以别名git push来同时推送到2个远程仓库(只用一个命令)? 我不在这里寻找一个非git脚本,但想在git中为我的本地存储库进行设置。 当我尝试后推脚本我失败了。

在Windows下的Git:MSYS或Cygwin?

我打算把我的项目迁移到git,而且我现在想知道哪个是windows下最好和/或最稳定的选项。 从我收集我基本上有2.5个选项: MSYSgit 在Cygwin下的git (又名2.5)来自Cygwin提示的MSYSgit(假设已经安装了Cygwin git)。 注意:IMO Cygwin本身就是一个很大的优势,因为你可以访问几乎所有的* nix命令行工具,就像在MSYSgit bash中那样,你只能访问这些工具的一小部分。 鉴于此,你有什么build议?

合并:汞/ Git与SVN

我经常读汞(和Git和…)比SVN合并更好,但我从来没有见过Hg / Git可以合并SVN失败(或SVN需要手动干预的地方)的实例。 你可以发布分支/修改/提交/ …操作的几个分步列表,显示当Hg / Git愉快地移动时,SVN会失败吗? 实用,不是非常例外的情况下,请… 一些背景:我们有几十个开发人员使用SVN来处理项目,每个项目(或一组类似的项目)都在它自己的仓库中。 我们知道如何应用发布和function分支,所以我们不会经常遇到问题(即,我们已经到了那里,但是我们已经学会了克服Joel的 “一个程序员对整个团队造成创伤”的问题或“需要六个开发人员两周才能重新整合一个分支”)。 我们有非常稳定的版本分支,只用于应用错误修正。 我们有足够稳定的中继线,能够在一周内创build发行版。 我们拥有单个开发人员或开发人员组可以使用的function分支。 是的,他们在重新整合之后被删除,所以他们不会混淆版本库。 ;) 所以我仍然在试图找出Hg / Git优于SVN的优势。 我很想获得一些实践经验,但是我们还没有任何更大的项目可以转移到Hg / Git,所以我一直坚持使用只包含less量文件的小型人工项目。 而且我正在寻找一些可以感受到Hg / Git令人印象深刻的能力的例子,因为到目前为止我经常阅读关于它们的内容,但是却没有亲自find它们。