天道酬勤,学无止境

mercurial

无法在路径加载平台(Unable to load platform at path)

问题 使用filemerge解决HG冲突时,出现以下错误 FileMerge[18002:707] Unable to load platform at path /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform 回答1 我在 Git 中有相同的 FileMerge 警告。 当我查看 Xcode 的首选项时,我可以看到 iPhoneSimulator 和 iPhoneOS 平台都没有安装,但是当我查看“/Applications/Xcode.app/Contents/Developer/Platforms”时目录确实存在。 我不是为 iOS 开发的,所以我删除了 iPhoneOS.platform 和 iPhoneSimulator.platform 并且警告消失了。 如果您确实需要这些平台,请尝试从 Xcode 正确重新安装它们。 回答2 我尝试将iPhoneSimulator.platform/Info.plist从二进制转换为 xml,确认 Filemerge 不再产生错误。 然后我将它转换回二进制文件,仍然,Filemerge 很好。 $ cd /Applications/Xcode.app/Contents/Developer/Platforms

2021-12-09 03:07:21    分类:技术分享    xcode   mercurial   filemerge

Python Popen 未能在 Windows PowerShell 中使用正确的编码(Python Popen failing to use proper encoding in Windows PowerShell)

问题 我正在 Windows PowerShell 中运行我的 Python 脚本,该脚本应该使用 Popen 运行另一个程序,然后将该程序的输出(实际上是 Mercurial)通过管道传输到我的脚本中。 当我尝试在 PowerShell 中执行我的脚本时出现编码错误。 我很确定它正在发生,因为在获取 Popen 调用的输出时,Python 没有使用 PowerShell 使用的正确编码。 问题是我不知道如何告诉 Python 使用正确的编码。 我的脚本看起来像 # -*- coding: utf-8 -*- #... some imports proc = Popen(["hg", "--cwd", self.path, "--encoding", "UTF-8"] + list(args), stdout=PIPE, stderr=PIPE) #... other code 当我在 Linux 上运行这个脚本时,我没有任何问题。 我还可以使用 PowerShell 在 64 位 Windows 7 Home Premium 中运行该脚本,没有任何问题。 这个 Windows 7 中的 PowerShell 使用的是代码页 850,即chcp的输出是850 (“ibm850”)。 但是,当我使用默认编码为 cp437 ( chcp = 437 ) 的 PowerShell 在32

2021-12-08 20:26:56    分类:技术分享    python   powershell   unicode   mercurial

为什么一个分支中的 Mercurial 退出会影响其他分支?(Why are Mercurial backouts in one branch affecting other branches?)

问题 这是一个很难解释的情况,所以请耐心等待。 我有一个 Mercurial 存储库,有 2 个主要分支, default和dev 。 工作通常在dev的命名分支(功能分支)中完成。 任何时候都可能有许多特征分支。 一旦该分支中的工作完成,它就会合并回dev 。 当准备发布时,会从dev (发布分支)创建另一个命名分支。 有时有必要从版本中排除整个功能。 如果是这种情况,则功能分支合并到dev的合并变更集将从新的发布分支中退出。 一旦发布分支准备好发布,它就会合并到默认值中(因此默认值始终代表生产中代码的状态)。 开发分支和功能分支上的工作照常进行。 当需要发布另一个版本时会出现问题,包括在前一个版本中退出的功能。 一个新的发布分支正常创建(脱离dev )。 这个新的发布分支现在包含从前一个发布分支回退的功能(因为回退是在发布分支上执行的,并且合并变更集保留在开发分支上)。 这一次,当发布分支准备好发布并合并到default 时,由于先前发布分支中的合并撤回而撤回的任何更改都不会合并到default 中。 为什么会这样? 由于新的发布分支包含所有功能分支变更集(没有任何内容被撤消),为什么默认分支也没有收到所有这些变更集? 如果以上所有内容都难以理解,这里是 TortoiseHg 的屏幕截图,显示了基本问题。 “branch1”和“branch2”是特性分支,“release”和

2021-12-08 15:56:58    分类:技术分享    version-control   mercurial   branch   dvcs   three-way-merge

如何重新创建本地删除的文件?(How to recreate locally deleted files?)

问题 我移动了 2 个文件,因为它们与最新的hg pull冲突,而且我已经在我的工作计算机上完成了这些更改。 现在我在我家的电脑,我不关心我的家庭版和了我想从信息库中的“最新”,让我感动的文件handler.py和model.py到handlerbackup.py和modelbackup.py并做了一个hg pull ,期望 Mercurial 会在移动后重新创建我的文件,但它没有。 我应该怎么做才能从存储库中重新创建已删除的文件? 回答1 您始终可以使用hg revert FILES撤消任何本地更改。 在这种情况下,mercurial 认为您想删除它,并且正在等待您提交删除操作。 回答2 你做了pull但你也做了update吗? Pull 不会更新你的文件; 更新确实如此。

2021-12-08 15:13:00    分类:技术分享    linux   mercurial

“向后移植”的工作流程更改为不同的 Mercurial (Hg) 分支?(Workflow to "backport" change into different Mercurial (Hg) branch?)

问题 我们有两个头。 一位是我们的主要开发负责人,另一位是我直到今天才忘记的。 我们发现了一个错误并在我们的主要开发分支中修复了它,我刚刚意识到它也应该在旧分支中修复。 我认为最好在旧分支上进行更改并将其与最新分支合并,但我们没有这样做。 mercurial 能解决这个问题吗? 我们还没有尝试做这样的事情,我真的无法想象它会如何完成。 回答1 是的,您有两个不错的选择: Graft:Mercurial 2.0 中的新功能 此版本引入了可以智能方式向后移植更改的嫁接命令。 “智能”是它会在内部使用合并,这意味着你得到 支持重命名:假设您修复了开发分支上文件foo.c的错误。 在较旧的维护分支foo.c中称为bar.c 。 使用hg graft ,对foo.c的更改可以正确地合并到旧的bar.c 。 三路合并:嫁接涉及扭曲图形并在该临时图形中合并。 三路合并的优点是您可以使用普通的图形合并工具来解决冲突。 要将default提示复制到old-branch您只需运行 $ hg update old-branch $ hg graft default 移植:旧版本 在我们拥有移植命令之前,移植扩展是要走的路。 这个简单的扩展会将变更集导出为补丁,并尝试将补丁应用到其他修订版。 因为我们正在处理“愚蠢的”补丁,所以不会考虑重命名之类的事情,并且您将不会获得对合并工具的支持,因为没有三向合并。

2021-12-08 13:27:39    分类:技术分享    version-control   mercurial   branch   cherry-pick

用于托管许多独立补丁的推荐 DVCS 机制(Recommended DVCS mechanism for hosting many independent patches)

问题 我在 http://sourceforge.net/projects/iotabuildit/(更多详细信息在 http://sourceforge.net/p/iotabuildit/wiki/Home/)上有一个刚刚开始的项目,目前正在使用 Mercurial 进行版本控制。 似乎 Mercurial 和 SourceForge 几乎拥有所有正确的功能或元素来组合我为这个项目想到的协作机制,但我想我还没有完全到位。 我希望人们能够提交、讨论和投票来自大量个人(比项目通常拥有的开发人员更多)的个人更改。 我希望用户能够尽可能轻松地参与其中。 现在的想法是人们可以克隆“free4all”分支,它是基本“代码”存储库的克隆,或者他们可以在自己的 SourceForge 用户项目中创建自己的分支(SourceForge 现在为每个用户提供了一个工作空间)托管杂项项目相关内容)。 然后他们可以将其克隆到他们的本地存储库(在下载 TortoiseHg 或他们首选的 Mercurial 客户端之后)。 然后他们可以进行修改,提交它们,将它们推送到 fork,并请求合并到基本“代码”存储库中,此时我们可以讨论/审查合并请求。 这一切仍然是太多的步骤,而且比我想要的更正式。 我看到 Mercurial 中有“搁置”这样的东西,但我不知道 SourceForge 存储库如何/是否支持它。

2021-12-08 13:04:42    分类:技术分享    version-control   mercurial   dvcs   sourceforge

-mno-cygwin : gcc 构建 Mercurial (Windows 2000)(-mno-cygwin : gcc building Mercurial (Windows 2000))

问题 因为 Mercurial 安装程序不能在旧的 Windows 2000 系统上运行,所以我试图从源代码构建它。 它抱怨 C 编译器无法识别选项-mno-cygwin 。 我的 gcc 版本是 4.6.1。 而 MinGw 只有两个月大。 遵循以下步骤:https://www.mercurial-scm.org/wiki/BuildingOnWindows F:\mercurial-2.0.2>python setup.py build running build running build_mo warning: hgbuildmo: could not find msgfmt executable, no translations will be built running build_py package init file 'mercurial\__init__.py' not found (or not a regular file) package init file 'mercurial\__init__.py' not found (or not a regular file) running build_ext building 'mercurial.base85' extension f:\mingw\bin\gcc.exe -mno-cygwin

2021-12-08 10:11:22    分类:技术分享    c   gcc   mercurial

Windows PowerShell ISE 不提示输入(Windows PowerShell ISE doesn't promt for input)

问题 我使用控制台作为管理 mercurial 存储库的工具。 使用经典的cmd或Console2我输入: hg in 控制台提示如下: D:\workspace\someproject>hg in http authorization required realm: Bitbucket.org HTTP user: xorty password: 显然,我输入了密码。 但是当我在 powershell 控制台中输入“hg in”时,它没有提示任何内容。 它一直在说: Running script / selection. Press Ctrl + Break to stop Running script / selection. Press Ctrl + Break to stop 我可以让 PowerShell ISE 像经典控制台一样运行,或者这不是 PowerShell 的工作方式? 回答1 PowerShell ISE 确实不支持需要交互式输入的控制台应用程序。 链接的博客条目详细说明了如何处理的选项。 由于 PowerShell ISE 不是控制台,因此普通的控制台应用程序无法执行它们习惯的所有操作,当然,PowerShell cmdlet 可以正常工作,因为有几件事依赖于 PowerShell 主机应用程序(您将获得带有 Read-主机,例如)。 Console2

2021-12-08 07:00:26    分类:技术分享    windows   powershell   mercurial   cmd

如何在远程开发服务器上使用版本控制?(How to use version control on a remote development server?)

问题 我在一个由开发人员和设计师组成的小团队中,开发 Web 应用程序,现在我们决定开始使用版本控制。 我们有主开发服务器,所有项目都存储在其中,我们通过 ftp 处理它们(但我们有 ssh 访问权限)。 问题是,在有人推送提交后更新服务器上的文件的最佳方法是什么,以便所有更改都可以立即在浏览器中看到? 据我所知,git 存储库应该是“裸”的才能接收推送,而且由于它是“裸”的 - 它没有工作文件。 这是否意味着 git 没有用或者有办法? 在 Mercurial 中,必须在本地应用推送提交才能更改文件。 应该通过某种钩子来完成吗? 而且我实际上不知道 svn 在这种情况下的表现,从未使用过它。 该解决方案应该易于使用并与 GUI 客户端兼容。 回答1 寻找“钩子”,即在发生某些特定事件(例如在存储库中拉取变更集时)时由版本控制软件调用的脚本。 该功能在 SVN、GIT、Mercurial、Bazaar 中可用... 我目前在持有 WIP 网站的中央 mercurial 存储库上有一个钩子:当团队中的某个人将他的更改推送到那里时,该网站的测试版本会由钩子脚本自动更新。 然后当我们对某个版本感到满意时,我们会使用另一个脚本将该版本移动到测试版网站,以便一些用户可以查看。 回答2 无需工作树即可通过 Web 访问您的存储库。 请参阅 GitWeb 上的文档。

2021-12-07 11:18:49    分类:技术分享    git   svn   version-control   mercurial

在推送之前丢弃 Mercurial 中的本地分支(Discard a local branch in Mercurial before it is pushed)

问题 很多时候,我在本地 Hg 存储库上的提交很少,我不想推送,有时我想完全删除本地分支。 但是我不能回滚多个提交,这让我别无选择,只能创建一个新的克隆并再次下载整个存储库。 这感觉很愚蠢,因为如果我可以删除无论如何都不会影响远程存储库的本地分支,那么我就不必创建和设置新的克隆。 那么,它是在 Mercurial 中的方式还是有某种方法可以丢弃本地分支? 谢谢! 回答1 If you enable the mq extension (bundled with Mercurial), you can use hg strip. Be careful, though, as this will modify the history of your repository. The safe method is to clone your repository up to the revision preceding the creation of the branch you want to discard, then to pull the remaining changesets that you want to keep. 回答2 我知道为时已晚,但它可能对任何人有用: 如果您的分支尚未推送。 仅当您已完成提交但尚未推送时,第一次回滚才会更改hg rollback 第二次运行hg

2021-12-07 09:44:12    分类:技术分享    mercurial   branch   clone