我有一个用于存放工作文件的目录,该目录受版本控制(Mercurial):
〜/我的文件
在子路径中,我有一个包含用于我的 org-mode 设置的 Emacs 包的目录:
〜/ myfiles / org-mode
正如我所说,整个路径都处于版本控制之下,因此与 Hg 存储库“同步”。org-mode
子目录的原始来源也是互联网上的 (git) 存储库(http://orgmode.org/cgit.cgi/org-mode.git/)。
因此,如果能够直接从官方 org-mode 存储库中提取该目录的新版本,然后将其提交到我的个人存储库中,以便始终拥有适合我的 Emacs 配置的版本,那就太好了。
对于一名程序员来说,这可能是一个非常简单的问题——因为我不是程序员,我不确定如何处理这个问题,但我认为这一定是一个常见的问题。
当然,我可以将 org-mode 目录保存在本地的另一个路径中,并将其置于我的版本控制之外,但这样我就无法轻松地在某个时间点恢复完整的工作设置。
答案1
同时使用汞和git,在同一棵树上,不存在固有冲突;由于这些程序是独立开发的,因此它们不会互相干扰。
然而,在这种情况下,汞叠加于git(另一种看法是git存储库依赖于底层汞目录结构)。因此,请考虑以下示例,其中您已经拥有组织模式已克隆,并且有一个补丁等待从在线存储库中提取。
这是什么汞在你提取更改之前可能看起来像git:
c:\myfiles> hg log -l 1
changeset: 123:da5f372c3901
tag: tip
user: John Doe <[email protected]>
date: Fri Jun 13 12:00:00 2014 -0500
summary: Some change in the work files
然后你将更改拉到组织模式从git。然而,这里最重要的是,拉动动作不会立即地反映到汞存储库。
您可以测试较新的组织模式补丁可以正常工作。如果补丁不能立即工作,则应运行hg revert --all
,这将恢复存储库在最新提交时的样子。如果补丁确实有效或者您没有发现任何问题,则应该提交变更汞反映出你拉取了一组更改到组织模式。
c:\myfiles> hg com -m "Pulling changes in org-mode"
c:\myfiles> hg log -l 1
changeset: 124:da5f372c3901
tag: tip
user: John Doe <[email protected]>
date: Fri Jun 13 12:01:00 2014 -0500
summary: Pulling changes in org-mode
如果git将其与存储库相关的元数据存储在组织模式文件夹(即汞与存储库根目录中的 .hg 文件夹一样),回滚下面的提交应该没有问题汞(如果你在提交后发现组织模式):
c:\myfiles> hg rollback
rolling back last transaction
c:\myfiles> hg log -l 1
changeset: 123:da5f372c3901
tag: tip
user: John Doe <[email protected]>
date: Fri Jun 13 12:01:00 2014 -0500
summary: Some change in the work files
此外,正如我在评论中所述,无论您运行什么 VCS 软件,都可以执行此操作。如果您有:
c:\my_repo
c:\my_repo\2nd_repo
不会有问题,因为为了处理每个存储库,您必须在工作的目录内进行工作。
1- 我改编了这里一些代码,因为如上所述,我在这方面没有太多经验
答案2
答案3
您的代码依赖于“供应商分支”。每个分支都有自己的存储库。没问题。大多数版本控制系统允许“导出”最新代码,即不带元数据的代码。如果您将其提交到自己的存储库中,则不会发生冲突。您不太可能需要提交到两个存储库。但如果您需要,您可能可以解决这个问题。搜索词:“供应商分支”