标签: dvcs

Git与Mercurial存储库的互操作性

我在Mac上使用GIT.说够了.我有工具,我有经验.我想继续使用它.这里没有战争......

问题始终在于互操作性.大多数人都使用SVN,这对我来说很棒.Git SVN开箱即用,是一个没有多余装饰的解决方案.人们可以继续愉快地使用SVN,我不会丢失我的工作流程,也不会丢失我的工具.

现在......有些人和Mercurial一起来了.对他们来说很好:他们有他们的理由.但我找不到任何GIT HG开箱即用.我不想切换到HG,但我仍然需要与他们的存储库进行互操作.

你们中的任何人都知道一个简单的解决方案吗?

git version-control mercurial interop dvcs

194
推荐指数
7
解决办法
4万
查看次数

如何在git中看到传入的提交?

可能重复:
使用Git如何在本地和远程之间找到修改过的文件

如何在git中看到传入的提交?甚至更好,看看我刚刚git fetch/ git pullED?

编辑: 澄清问题:有人告诉我,要获得一些修复,我应该从他们的存储库中提取.我的目标是接受之前了解他们的变化. git pull自动合并,这不是我想要的. git fetch我会在没有合并的情况下抓住它们,但我不确定如何查看我刚刚插入的内容.原始措辞的原因是我通常使用Mercurial,其中命令是hg incoming <repo name here>-a命令,git似乎缺少模拟.

git dvcs

158
推荐指数
4
解决办法
6万
查看次数

合并:Hg/Git与SVN

我经常读到Hg(和Git和......)在合并方面比SVN更好但是我从未见过Hg/Git可以合并SVN失败的地方(或者SVN需要人工干预的地方)的实际例子.您可以发布一些分支/修改/提交/ ....-操作的逐步列表,显示SVN在Hg/Git愉快地移动时会失败的位置吗?实用,非常特殊的情况请...

一些背景:我们有几十个开发人员在使用SVN进行项目,每个项目(或一组类似项目)都在自己的存储库中.我们知道如何应用发布和功能分支,所以我们不会经常遇到问题(即,我们一直在那里,但我们已经学会克服Joel的问题 "一个程序员给整个团队造成创伤"或"需要六个开发人员两周才能重新整合分支机构").我们的发布分支非常稳定,仅用于应用错误修正.我们的中继线应该足够稳定,能够在一周内创建发布.我们还有一些开发人员或开发人员可以使用的功能分支.是的,它们在重新集成后被删除,因此它们不会使存储库混乱.;)

所以我仍然试图找到Hg/Git优于SVN的优势.我很想获得一些实践经验,但目前还没有任何我们可以移动到汞/ GIT中还没有更大的项目,所以我坚持用只含有少量由文件小型人工玩的项目.而且我正在寻找一些你可以感受到Hg/Git令人印象深刻的力量的案例,因为到目前为止我经常读到它们但却未能自己找到它们.

svn git merge mercurial dvcs

143
推荐指数
5
解决办法
2万
查看次数

命名分支与多个存储库

我们目前在相对较大的代码库上使用subversion.每个版本都有自己的分支,并对主干执行修复,并使用迁移到发布分支svnmerge.py

我相信现在是时候进行更好的源代码控制了,我一直在玩Mercurial.

虽然使用Mercurial管理这样的发布结构似乎有两个学派.每个版本都有自己的repo,并且针对发布分支进行修复并推送到主分支(以及任何其他更新的发布分支.)或在单个存储库(或多个匹配副本)中使用命名分支.

在任何一种情况下,似乎我可能会使用像移植一样的东西,以包含在发布分支中的cherrypick更改.

我问你 每种方法的相对优点是什么?

version-control mercurial branch dvcs

130
推荐指数
4
解决办法
2万
查看次数

人们怎么看待化石DVCS?

化石http://www.fossil-scm.org
我最近发现了这个,并开始将它用于我的家庭项目.我想听听其他人对这个VCS的看法.

我脑子里缺少的是IDE支持.希望它会来,但我使用命令行就好了.

关于化石的我最喜欢的事情:内置web服务器wiki和bug跟踪的单个可执行文件.存储库只是一个SQLite(http://www.sqlite.org)数据库文件,易于备份.我也喜欢我可以运行化石并将存储库放在我的拇指驱动器上.这意味着我的软件开发已经变得完全可移植.

告诉我你的想法....

dvcs fossil

124
推荐指数
6
解决办法
2万
查看次数

在Mercurial中使用移植物的后果

最近有几个关于在Mercurial中维护发布分支时跳过更改的问题.例如:

自从它在2.0中引入以来,我一直想知道如何graft避免这个问题.给定这样的修订树:

A---B---C---D---E---F---G---H---I---J
Run Code Online (Sandbox Code Playgroud)

假设我们需要创建一个跳过Evil更改的发布分支E.

hg update -r D
hg graft "F::J"
Run Code Online (Sandbox Code Playgroud)

给我们:

A---B---C---D---E---F---G---H---I---J
             \
              --F'--G'--H'--I'--J'
Run Code Online (Sandbox Code Playgroud)
  • Q1:这里发生了什么?我可以理解,它transplant会产生补丁F::J,然后将它们应用到D,但graft据说使用3路合并而不是补丁.那么......这是怎么回事?为什么更好?

让我说我现在修复E,并将其合并到我的发布分支.

                  --E2-----------------
                 /                     \
A---B---C---D---E---F---G---H---I---J---M1
             \                            \
              --F'--G'--H'--I'--J'---------M2--
Run Code Online (Sandbox Code Playgroud)

M1是直接合并; 没什么特别的.M2正在合并具有"相同"(或至少等同)变化的分支.

  • Q2:这个合并只是一个正常的3路合并使用D,J'M1
  • 问题3:mercurial存储/使用有关移植操作的额外信息以帮助它合并吗?

最后......

  • 问题4:像这样的流程存在哪些潜在问题?

version-control mercurial branch dvcs cherry-pick

98
推荐指数
2
解决办法
2万
查看次数

删除所有本地更改集并还原为树

我正在使用Mercurial,我在当地遇到了一个可怕的混乱,有三个头.我无法推送,我只想删除所有本地更改和提交,然后重新开始使用完全干净的代码和干净的历史记录.

换句话说,我希望最终得到(a)与远程分支的尖端中存在的本地完全相同的代码,以及(b)没有任何本地提交的历史记录.

我知道会hg update -C覆盖任何本地更改.但是如何删除任何本地提交?

要清楚,我没有兴趣保留我在当地完成的任何工作.我只想要最简单的方法来恢复到完全干净的本地结账.

version-control mercurial dvcs head

95
推荐指数
4
解决办法
4万
查看次数

Git push不会做任何事情(一切都是最新的)

我正在尝试更新GitHub上的Git存储库.我做了一些更改,添加了它们,然后尝试做了一个git push.回复告诉我一切都是最新的,但显然不是.

git remote show origin
Run Code Online (Sandbox Code Playgroud)

用我期望的存储库响应.

为什么当存在在存储库中看不到的本​​地提交时,Git告诉我存储库是最新的?

  [searchgraph]  git status
# On branch develop
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       Capfile
#       config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)

  [searchgraph]  git add .

  [searchgraph]  git status
# On branch develop
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   Capfile
# …
Run Code Online (Sandbox Code Playgroud)

git dvcs

95
推荐指数
6
解决办法
14万
查看次数

git同时推送到多个存储库

我怎样才能git push不仅推送到origin另一个远程存储库?

因为git push它只是一个别名git push origin,我可以将git push命名为同时推送到2个远程存储库(只用那个命令)吗?

我不是在寻找一个非git脚本,但是想在git中为我的本地存储库设置它.

当我用推后脚本尝试它时,我失败了.

git version-control dvcs

84
推荐指数
2
解决办法
4万
查看次数

为什么git log不会显示已移动文件的历史记录,我该怎么办呢?

我已经重命名了几个文件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%
Run Code Online (Sandbox Code Playgroud)

我现在正试图获取其中一个移动文件的历史记录,所以我可以看一个旧版本,但我没有得到任何非常有用的东西:

~/projects/system/runtime/src% git log --follow --find-copies-harder -M -C R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date:   Wed Dec 8 22:37:54 2010 +0000

    Moved R_DebugUI into runtime
~/projects/system/runtime/src% 
Run Code Online (Sandbox Code Playgroud)

(我也尝试过没有 …

git history dvcs rename git-log

84
推荐指数
4
解决办法
4万
查看次数

标签 统计

dvcs ×10

git ×6

mercurial ×5

version-control ×5

branch ×2

cherry-pick ×1

fossil ×1

git-log ×1

head ×1

history ×1

interop ×1

merge ×1

rename ×1

svn ×1