【问题标题】:Change root directory of repo in Mercurial在 Mercurial 中更改 repo 的根目录
【发布时间】:2012-02-19 02:40:22
【问题描述】:
我正在开发一个具有文件夹结构的 Android 游戏:
\bin
\data (contains game graphics)
\libs (libgdx engine jars)
\src
----\com
--------\brand
------------\game
(*.class files)
愚蠢的是,我在 \src 目录中创建了一个 mercurial 存储库 (hg init)。因此,如果我更新任何图形(小文件大小),它们不会在我提交时添加到存储库中。我的问题是:如何更改 repo 的根目录以包括 \data 目录以及 \src 目录,但不包括 \libs 目录,因为它包含 10-20mb jars?
【问题讨论】:
标签:
version-control
mercurial
【解决方案1】:
有两种方法可以做到这一点。
1) 开始一个新的仓库。它既快速又简单,但您会丢失您的历史记录。
2) 使用 hg 重命名。这实际上是一个移动命令。
将 src 目录重命名为有意义的名称,然后执行此操作。
- hg 重命名 MyProject/com MyProject/src/com
- 将所有文件/文件夹复制到 MyProject/ 目录中。
- 将 bin 和 libs 标记为可忽略和
- 添加其他所有内容。
- hg 提交
【解决方案2】:
如果您不想只使用hg rename,您可以使用convert 扩展名(默认情况下随Mercurial 提供,您只需要enable it in your .hgrc)。
使用--filemap 参数和文件映射文件运行它,该文件具有以下内容:
rename com src/com
您最终将获得一个包含所有历史记录的新存储库,但您的 com 目录已移至 src/com。然后,您可以将 bin、data 和 libs 文件夹复制到其中,运行 hg addremove,您应该一切顺利。
警告:新的 repo 与旧的 repo 完全不同——变更集 ID 等会有所不同,因此您过去合作过的任何人都必须使用新的 repo。