据我所知,像Mercurial这样的分布式修订控制系统的主要优点之一就是你不应该担心在你的超级重要主仓库中破坏某些东西(很多其他开发人员都会使用它),并且你所做的就是所有的工作和研究在你的个人远程克隆中,直到你明白一切都稳定,你可以推动你的工作.因此我得到了一个问题:如果有可能不会推回所有的更改历史记录(您为自己制作了几个修订版),但只有一个实际上是在您的回购和当前状态之间的差异.
一个例子:
hg init master-repo; cd master-repo
echo -e 'Important file\nWith Bug!' > file
hg commit -A -m "initial commit"
cd ..; hg clone master-repo hotfix-repo; cd hotfix-repo
echo "fix1" >> file
hg commit -m "first attempt to fix bug"
echo "fix2" >> file
hg commit -m 'Fixed it!'
Run Code Online (Sandbox Code Playgroud)
现在(可能在拉动并合并最新的master-repo'更改之后)我想只推回一个包含我在没有本地提交历史记录的情况下完成的所有更改的变更集.一种可能的解决方案是再创建一个克隆,然后在两个克隆之间使用diff/patch从第一个克隆中提取/应用更改,并在第二个repo中一次性提交所有更改.然后像正常情况一样按下.但是有可能只使用mercurial命令吗?
谢谢你!
我在Python中编写了一个CLI(作为Mercurial的扩展),并且希望支持制表完成.具体来说,我想在提示中捕获标签并显示匹配选项列表(就像bash一样).
示例:输入部分名称:
ext*TAB*
extensions
extras
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何捕捉Tab事件.我正在使用ui.prompt()
Mercurial 的API,它只是raw_input()
在引擎盖下调用.
据我所知,raw_input()
只返回'enter',如果用户输入一个标签,返回的字符串只包含一个"\t"
.
示例Mercurial URL: ssh://myhost//path/to/repo
为什么两个斜杠?主机名已指定.为什么它不起作用http://myhost/path/to/page
只有一个斜线就足够了?
有没有办法防止在运行hg view命令时关闭的分支显示在顶部?我知道'限制'选项.我真的不需要封闭的分支从视图中完全消失,但是如果它们保持不动(它们很久以前就关闭了)会很好,而不是每次执行合并时都会在顶部附近弹出.
以下是发生这种情况的示例屏幕截图.你可以在右边看到时间都混淆了,在这种情况下并不太可怕,但在我真正的回购中,每当我合并时,关闭的分支就会弹出顶部附近,这会让人烦恼封闭分支是一年多以前,真的没有意思.
我有一组二进制配置文件,每个文件有三个版本 - 每个文件的原始版本和两个不同修改版本.我需要能够同时看到两个版本和原始版本之间的差异.
我需要的是一个二进制文件的三向差异工具.通过相当费力的谷歌搜索,我最终发现了一个应用程序的截图,它完全符合我的需要 - 不幸的是,包含图像的论坛帖子没有提到他们正在使用的应用程序:
http://www.xboxhacker.org/index.php?topic=15032.0
有人能指出我(Windows)应用程序的方向,提供三个二进制文件的二进制安全(十六进制)比较??
我对Mercurial有一个关于关键字扩展扩展的问题:是否可以使用关键字扩展实际的提交消息,以便它出现在源代码中以便快速参考源代码中的内容?
编辑:这似乎工作:
在repo的hgrc
Log={desc}
Run Code Online (Sandbox Code Playgroud)
但它并没有堆叠,据说CVS对应的确如此.
使用来源,卢克:
不支持跨越多行和扩展的扩展,如CVS'$ Log $.关键字模板映射"Log = {desc}"扩展为变更集描述的第一行.
我有一个现有的项目在Mercurial版本.让我们称之为"repo1".Repo1有一些我想保留的历史.
但我最近决定我应该对repo1的父目录进行版本控制.
如何在父级之外创建Mercurial存储库,使repo1成为该项目的一部分,同时保留repo1s历史记录.我不希望repo1成为子项目.我希望它全部合并到一个存储库中.
我看了看hg convert
,和hg export
/ hg import
,但我似乎无法弄清楚如何让它们按我想要的方式工作.
我可以复制repo1文件,删除文件.hg
夹,然后版本批次,但我会失去repo1的历史记录.
据我所读:Subversion,Git,Mercurial,Bazaar是很好的版本控制软件.Subversion是一个基于服务器的.
但是当唯一的要求是:最好的(我鼓励添加你自己的)系统是什么:
这将与C++一起使用,如果这很重要,将来可能是C#.我真的不希望它被我永远不会使用的服务器接口混乱.我认为后退和前进意味着分支.
我有三个巨大的文件,只有2列,我需要两个.我想将它们合并到一个文件中,然后我可以将其写入SQLite数据库.
我使用Python并完成了工作,但是花了大约30分钟,我的系统还挂了10个.我想知道是否有更快的方法使用awk或任何其他unix工具.Python中更快的方式也会很棒.代码如下:
'''We have tweets of three months in 3 different files.
Combine them to a single file '''
import sys, os
data1 = open(sys.argv[1], 'r')
data2 = open(sys.argv[2], 'r')
data3 = open(sys.argv[3], 'r')
data4 = open(sys.argv[4], 'w')
for line in data1:
data4.write(line)
data1.close()
for line in data2:
data4.write(line)
data2.close()
for line in data3:
data4.write(line)
data3.close()
data4.close()
Run Code Online (Sandbox Code Playgroud) 我有一个版本的应用程序1.0
.我现在需要开始处理版本,2.0
但同时维护和修复版本中的错误1.0
.
从Bug修复1.0
将被合并到了2.0
释放,但没有新的功能,将从被反向移植2.0
到1.0
释放.
我理解分支是如何工作的,但我需要能够同时处理两个版本,因此在同一个工作文件夹中的分支之间切换是不切实际的.我希望能够同时运行这两个版本的代码.
什么是能够同时使用命名分支处理同一应用程序的两个版本的典型设置或工作流程?即使用一个文件夹中的一个分支和另一个文件夹中的另一个分支?
我是否只是将存储库克隆到版本的新文件夹中2.0
,并将分支设置为2.0
发布版本?
我对Mercurial有点新意,所以请原谅我,如果这听起来有点幼稚.