问题标签 [subrepos]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mercurial - 将*单个文件*作为子存储库添加到 mercurial 存储库的推荐方法
我有一个善变的存储库myProject
:
现在useful.js
是一个包含一些有用类的文件。我在多个项目中使用它,因此它有自己的存储库:
这个想法是其他人可以签出useful
,查看文件和示例和自述文件,如果他们喜欢,他们可以复制useful.js
到自己的项目中并使用它。
由于useful.js
在我的一些项目中使用过,所以推荐的保持同步的方法是什么?有一个限制useful.js
必须存在于顶级文件夹myProject
中,即不能嵌套。这使得使用子存储库变得很棘手(无论如何,我都会得到其他文件,例如example.js
and README
)。
另一件需要注意的是,useful
repo 有几个分支:default
、version1
和version2
. 我使用的项目也useful.js
有分支default
和. 我想确保每当我在分支之间切换时,我的切换分支也是如此。如果不是这样,我可能会使用符号链接。version1
version2
myProject
useful.js
这种情况似乎并不少见。其他人如何处理?只需写一个钩子update
来检查我是否正在切换分支并相应地切换?加上钩子commit
, push
, pull
? (基本上复制单个文件的子存储库行为)?
干杯。
mercurial - 创建 Mercurial 子存储库,同时维护历史记录
我即将对我的 Mercurial 存储库进行一些重大更改。由于我将使用最后手段的功能,我正在寻找一些建议和保证,我不会做愚蠢的事情。
我在哪里:
我有一个 Mercurial 存储库,其中包含所有这些文件的完整历史记录:
源是 Mercurial 存储库。秘密子系统文件夹包含我们想要保留在内部的知识产权代码。未分类的子系统文件夹包含我们想要外包给第三方维护的代码。公共文件夹包含两个子系统所依赖的代码。我们将保留所有权,但我们希望与第三方共享。
显然,我不能将我的整个存储库推送给第三方公司。第三方会看到太多。
我想去的地方:
在 阅读 了 subrepositories 之后,我认为我需要这样做:
有三个子存储库:secret_subsystem、unclassified_subsystem、common_files。由于此建议,请确保 /source 级别没有其他文件。
让外包商在其机器上的源代码级别创建一个全新的存储库,以及两个相应的子存储库。
将 unclassified_subsystem 和 common_files 推送到外包商,根据需要拉回 unclassified_subsystem,根据需要推送新的 common_files 存储库。
维护历史:
我想尽可能多地维护所有子系统的提交历史。
为此,我将运行hg convert扩展命令 3 次,每个子存储库运行一次。我将过滤到仅属于每个子存储库的文件。我可能还需要映射文件名以将文件从 ./common_files/foo.py 移动到 ./foo.py (例如)。
我的问题:
1)将存储库划分为子存储库是实现安全性的合理方式 - 即。第三方只能查看和编辑我们的一些文件?
2) 是否使用hg convert
合理的方式从现有存储库创建子存储库,同时仍保留历史记录?
3)hg convert
的过滤器会去掉 (a) 所有关于不在过滤存储库中的文件的提交消息吗?它会过滤掉不在过滤存储库中的文件的所有差异吗?
还有另一个隐含的问题:我是否正在进入一个受伤的世界?如果是这样,我将简单地放弃保留文件历史记录,甚至将它们设为单独的存储库并忘记跨存储库提交。
mercurial - 对于 Bamboo 持续集成:我们是否应该将我们的 SQL 代码存储库设置为代码的 Mercurial 子存储库?
我们使用 Bamboo 作为部署到多个环境的持续集成构建服务器。我正在通过 Bamboo NANT 脚本使用 Red Gate SQL Compare 和 Data Compare 集成 SQL 代码部署。我们的 TEST 环境是来自我们 repos 的“TEST”分支的代码,而 STAGE 环境是来自我们 repos 的“default”分支的代码。
我们的 SQL 和代码库分为单独的 Mercurial 存储库:(Project_SQL) 和 (Project)。我们对每个 repo 的承诺方式是不同的。在 Project_SQL 存储库中,开发是线性的:每个开发人员从 TEST 分支分支出来,创建一个 dev 分支 (Branch_1) 并处理他们的更改,提交到 dev 分支,然后合并 BACK 到 TEST 分支。我们只使用 TEST 分支的最新测试和工作提示从 TEST 的头部移动到默认分支。示例:如果 0、1、2、3 是提交,并且 0、1 和 3 被测试并通过。默认情况下只有 0 和 1。在项目存储库中,从默认推送到生产的最后一个标记版本的开发人员分支并创建一个开发分支(Branch_2),处理他们的更改,提交到开发分支,并将他们的更改合并到测试中。
要求是在 Bamboo 轮询间隔内,如果有代码提交 (Project),则应更新 SQL 存储库 (Project_SQL),并在编译代码和执行测试之前部署任何 SQL 更改。如果在轮询间隔只有 SQL 更改,则部署 SQL 并执行代码中的测试。
有了以下流程和要求,我的阅读建议我们可以使用 SQL 存储库作为代码的子存储库。或者我们可以有单独的计划,在 Bamboo 中设置依赖项。
推荐的方法是什么还是有更好的方法?
mercurial - 如何在远程托管环境中使用主存储库和子存储库维护稳定/默认配置?
我有一个应用程序“myapp”,它使用与其他应用程序“common”和“common-www”通用的两个模块。
这些在主存储库中排列为薄壳
每个子存储库都设置为具有“生产”和“主干”存储库的稳定/默认配置。
稳定(“生产”)上的瘦壳主控的 .hgsub 文件是:
主存储库本身位于:
这很棒——我有一个主存储库,在应用程序和子模块中具有一致的版本控制。
问题在于能够维护主存储库的稳定/默认视图,因为 .hgsub 文件需要指向不同的存储库:
由于我必须在 .hgsub 文件中放置绝对路径,因此我最终得到了两个完全独立的瘦壳主存储库——一个用于开发,一个用于生产——并且无法在发布周期内将更改从开发推送到生产。
这种用于远程托管的主存储库方法是共享库的典型方法吗?您能否推荐另一种工作方式(关于 hgsub 路径是绝对路径的远程托管)?
任何想法非常感谢?
version-control - 如何正确添加子存储库
我有一个名为的存储库main
,在它下面有许多子存储库。最初创建main
超级存储库时,我已获取现有存储库并将它们复制到main
文件夹中,然后添加.hgsub
文件以指示子存储库的名称。
现在,这个main
文件夹位于我们公司的文件服务器上,由 提供服务hgService
,我们需要向它添加新的存储库。在广阔的绿色世界中,这是如何无缝完成的?
如果我克隆main
到我的本地机器,然后hg init newrepo
,并将其复制到克隆main
并添加正确的条目,.hgsub
我可以提交,但我不能推送。它给了我一个错误http error 404 path not found
。好的,很公平,所以我将条目添加到hgService
的web.conf
文件中,然后重新启动。现在我得到一个不同的错误,比如subrepository 'newrepo' doesn't exist
Well duh!我正在尝试添加它!
所以我终于崩溃了,不得不 RAdmin 到服务器,手动创建一个新的 repo,将它添加到main
正在服务的 repohgService
并提交更改。这对我来说似乎非常肮脏,让事情变得更加困难的是服务器工作目录的状态已经过时了大约 6 个月,我必须解决无数问题才能将其更新到最新版本。
必须有更好的方法来做到这一点.. 我不能让用户 RAdmining 进入公司。VCS 服务器每次都需要一个新的存储库吗?对?
mercurial - HG 克隆存储库,带有子存储库,无需拉取
我试图弄清楚如何在不从源代码中提取的情况下克隆带有子存储库的存储库。恐怕,虽然我已经阅读了教程和示例,但我的 Mercurial 知识是暂时的。
现在,.hgsub 结构是一个类型列表:
阅读帖子的答案如何在不再次拉取子存储库的情况下进行本地克隆?我试图将其更改为列表
hg update -R rev
无论我做什么,我总是最终从源(ssh)而不是本地子存储库内容中提取。
注意:当我尝试更新我的原始存储库时,我收到一个关于重复路径的错误,只有当我恢复我在 .hgsub 文件中的更改时才会消失。
我还尝试了什么:
一个想法:制作存储库的副本,例如复制和粘贴,并使用硬链接。这是个好主意吗?当我更改副本时,我最终不会对原始文件进行更改吗?
另一个想法:使用硬链接克隆 .hg 文件夹,然后简单地复制其余内容?
有人有解决这个问题的方法吗?
mercurial - 确定远程服务器上的子存储库中的更改,而无需在主存储库中提交
我想将分层结构与 mercurial 存储库一起使用。
结构
.hgsub
然后我的同事将只修改sub1存储库,他们将没有Main存储库。
我如何确定 sub1 中的更改比我的同事所做的更改。如果这些更改未在主
存储库中提交, hg pull不会看到这些更改。
或者它的结构不正确,我必须给我的同事Main repository 包含sub1的数据?
mercurial - hg 为 subrepos 服务
我有一个带有 subrepos 的 repo,并且想做hg serve
.
在另一台电脑上,我试过了
场景 1:当我的原始仓库在 .hgsub 中有以下形式的行时:
我在另一台电脑上:
(发球计算机只是在那之后等待)
(并且只有 new_repo 中的 sub_repo_1。我尝试过更新,拉...有错误)
我试图实际单独克隆 sub_repo_2,并不断收到错误 404(发送和接收计算机上的机器人)。
场景 2:当我将 .hgsub 中的行替换为
hg serve 无法为 subrepos 提供服务吗?或者 - 我做错了什么?
注意:我每次都更新了 subrepos 中的 hgrc 文件以匹配 .hgsub 中的路径。
version-control - 跟踪子存储库中的内部库
我们正在开发一个内部框架,多个项目将使用该框架。这个想法是将整个框架作为每个项目存储库的可变子存储库进行跟踪。这导致了以下子存储库树(请参阅瘦壳存储库):
- 这对你有意义吗?是否有更好/更简单的方法来处理这些不涉及子存储库的依赖项?
- 具体来说,拥有两个 CommonLib 子存储库是否有意义?
- 如果没有,Project 使用 FrameworkMaster/CommonLib 是否有意义?如果依赖关系更复杂,这可能会变得混乱。
- 你会在哪里打开功能分支?上主?仅在相关的子存储库中?
- 如果您在主服务器上没有功能分支,则每次克隆存储库时,您最终都会获得最后一次提交的子存储库状态,这可能会将任何子存储库放在任何随机功能分支中。很混乱。
- 如果你在 master 上有特性分支,你仍然需要在至少一个 subrepo 中有一个特性分支,以避免在那里有未命名的头。
一般来说,这个解决方案听起来很难使用。有什么建议么?
mercurial - 使用带有 bitbucket 和 ToritoiseHg 的子存储库
我在 TortoiseHg 中有如下子存储库结构:
MainFolder 是 bitbucket 上的私有存储库 SubFolder1 是 bitbucket 上的私有存储库 SubFolder2 是 bitbucket 上的私有存储库
MainFolder 中的 .hgsub 文件如下所示:
MainFolder 中的 .hgsubstat 文件也具有有效的 guid 和子存储库名称。
问题是每当我尝试为 MainFolder 推送到 bitbucket 时,首先它推送 MainFolder,然后是 SubFolder1,但是当它到达 SubFolder2 时,TortoiseHg 抛出错误“中止:存储库不相关”。
当我在 bitbucket 上检查我的 MainFolder 存储库时,它实际上具有 SubFolder1 的内容(它应该在那里列为子存储库)。
如何解决此问题,以便将 MainFolder 正确上传为父存储库,并将 SubFolder1 和 SubFolder2 列为其在 bitbucket 上的子存储库?