标签: subtree

Boost 1.46.1,属性树:如何迭代ptree接收子ptree?

首先,我要说我认为我应该怎么做但我的代码不会以任何方式编译我尝试.我的假设基于这个空ptree技巧的官方例子.在那里你可以找到下一行:

  const ptree &settings = pt.get_child("settings", empty_ptree<ptree>());
Run Code Online (Sandbox Code Playgroud)

这表明从(或应该)可以从ptree中获取subptree.

所以我假设我们可以用BOOST_FOREACH这样的方式迭代到ptree :

BOOST_FOREACH(const boost::property_tree::ptree &v,
    config.get_child("servecies"))
{

}
Run Code Online (Sandbox Code Playgroud)

但我得到下一个错误:

错误1错误C2440:'初始化':无法从'std :: pair <_Ty1,_Ty2>'转换为'const boost :: property_tree :: ptree&'

或者如果我尝试

BOOST_FOREACH(boost::property_tree::ptree &v,
    config.get_child("servecies", boost::property_tree::empty_ptree<boost::property_tree::ptree>()))
{

}
Run Code Online (Sandbox Code Playgroud)

我明白了:

错误1错误C2039:'empty_ptree':不是'boost :: property_tree'的成员

那我该怎么做:如何通过Boost Ptree迭代并得到子Ptrees?

更新: 我也试过这样的代码

    BOOST_FOREACH(boost::property_tree::ptree::value_type &v,
    config.get_child("path.to.array_of_objects"))
{
    std::cout << "First data: " << v.first.data() << std::endl;
    boost::property_tree::ptree subtree = (boost::property_tree::ptree) v.second ;
    BOOST_FOREACH(boost::property_tree::ptree::value_type &vs,
        subtree)
    {
        std::cout << "Sub data: " << vs.first.data() << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

这编译,不会抛出任何exeptions但不会cout任何 …

c++ boost subtree boost-propertytree boost-foreach

30
推荐指数
3
解决办法
5万
查看次数

git subtree pull说工作树有修改,但是git status说它没有.是什么赋予了?

如果我在我的一个存储库中执行此操作:

git subtree pull --prefix=frameworks/AquaticPrime --squash AquaticPrime
Run Code Online (Sandbox Code Playgroud)

我明白了:

Working tree has modifications.  Cannot add.
Run Code Online (Sandbox Code Playgroud)

如果我这样做(当然是在同一个地方):

git status
Run Code Online (Sandbox Code Playgroud)

我明白了:

# On branch master
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

我不太确定这里发生了什么.git status命令意味着我没有修改,所以我假设git子树拉引用了与子树相关的不同分支中的修改,但它并不完全清楚.

任何人都可以提供启发吗?

git subtree

27
推荐指数
4
解决办法
2万
查看次数

将更新合并到我的子树时,Git很困惑

我们之前在主存储库中使用了许多子模块,但是为了提高项目的可维护性,我们开始了一个实验分支,我们用子树替换它们.

这很好 - 但是现在当我试图更新其中一个子树时,它错误地将更新合并到一个完全错误的目录中,甚至不是一个子树.

分支"子树"包含实验分支的主存储库是:git://github.com/hugowetterberg/goodold_drupal.git

要从以下位置合并更新的存储库:git://github.com/voxpelli/drupal-oembed.git

通过执行合并:git merge -s subtree oembed/master

应将更新合并到的路径:sites/all/modules/oembed /

它们合并的路径:modules/aggregator/translations /

任何人都知道如何获得子树的更新或错误是什么?

git merge subtree git-subtree

19
推荐指数
2
解决办法
2565
查看次数

git报告合并冲突没有变化,空行(使用git-subtree)

我正在测试使用git-subtree将库repo合并到一个更大的项目中.原则上似乎很棒.有时当我做一个"git subree pull"时,我会遇到这样的合并冲突:

<<<<<<< HEAD
=======
An inserted line from the lib repo
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d
Run Code Online (Sandbox Code Playgroud)

这是在库仓库中进行的更改,合并到一个尚未在本地修改的文件中.或者另一个例子,我在本地项目仓库中添加了一行,但是在一个文件中,该文件是要合并的子树的一部分:

<<<<<<< HEAD
Another inserted line
=======
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d
Run Code Online (Sandbox Code Playgroud)

为什么git会将这些报告为合并冲突,但该地区报告称冲突是空的?有什么方法可以预防吗?

这些很容易解决,但它搞砸了git子树的工作流程

git subtree git-subtree

16
推荐指数
1
解决办法
2241
查看次数

git:我可以子树只合并存储库的子路径吗?

我有遥控器Foo和Bar.Foo是一个包含大量目录的Web应用程序,/public其中相关的目录包含各种文件和其他目录.

Bar是一组库和前端使用的东西,因此它应该/public/bar在Foo中.Foo那里没有文件.

无论是子模块还是子树合并,这都是小菜一碟.然而…

Bar的树很乱,它有各种各样的预生产文件,比如PSD和FLA,唯一真正有用的部分就是它里面的东西/www/tools.

所以,我想要做的是将Bar's合并/www/tools到Foo中/public/bar,并假装Bar的其余部分甚至不存在.

可以做?

(我认为这与你最初将你的项目合并为子树的项目非常类似.我不知道该怎么做.)

git version-control merge subtree

14
推荐指数
2
解决办法
6477
查看次数

使用git子树推送"致命:坏对象"错误

这是一个noob问题,但我正在解决这个问题.我继承了一个奇怪的问题,一个git子树似乎是repo腐败.

这是场景:项目B中正在使用基于git的项目A的子树.部署部署脚本用于将子树推送到项目B的回购:

git subree push -P sub/path/name --squash git@github.com:MyCo/project_b.git projectb_branch

它开始推动提交并失败

"fatal: bad object {sha}" 
Run Code Online (Sandbox Code Playgroud)

我在源代码的git日志中搜索了SHA.它出现在提交中:

git-subtree-dir: app/assets/ui
git-subtree-split: {sha}
Run Code Online (Sandbox Code Playgroud)

目标repo(project_b)确实具有该SHA的提交但源repo没有.我浏览了子树shell脚本,我可以看到它在尝试使用git log查找该对象时失败(在toptree_for_commit函数中调用git log -l --pretty = format:'%T'{sha}).

在这一点上,我在我的头脑中,但渴望寻找解决方案.在我的有限知识允许的情况下,我对此进行了研究,所以我欢迎任何可以让我更接近解决方案的提示,技巧或RTFM.

衷心的感谢!

git subtree

13
推荐指数
2
解决办法
4478
查看次数

重置git子树中的diff计数

使用git-subtree,运行时计算的差异git subtree split数量随着时间的推移而增加,达到可以进行拆分的值需要很长时间.

修复它的一种方法是git rm路径,提交它然后再git subtree add返回.

是否有更简单/更简洁的方法来重置子树?

git subtree

13
推荐指数
1
解决办法
477
查看次数

将上游项目推到master上后,如何修复git子树?

我一直在尝试使用git子树,并遇到了以下情况。

我使用git子树将一个外部项目添加到我的仓库中,我有意保留了上游项目的所有历史记录,因为我希望能够参考该项目的历史记录,并在以后为上游项目做出贡献。

事实证明,上游项目的另一个贡献者不小心将一个大文件推入了master分支。为了解决这个问题,上游项目改写了历史并将其推向了主人。在创建“ monorepo”时,我包括了该提交,并且我也想删除它。

如何更新存储库以反映子树的新历史记录?

我的第一个尝试是使用filter-branch完全删除子树和所有历史记录。

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch upstream-project-dir' --prune-empty HEAD
Run Code Online (Sandbox Code Playgroud)

一旦删除了旧版本的子树,我就可以使用新的上游母版重新添加子树。但是,这不起作用,因为由于某种原因,提交历史记录仍显示在git日志输出中。

git subtree

12
推荐指数
1
解决办法
152
查看次数

git子树推送更改回子树项目

缺少以下内容:我想将提交消息推送到子树,但只推送适用于该树的消息.我该怎么做呢?


我有两个项目,MasterSlave. Slave被签出作为签出的子树通过哪里是Master检查到的分支:lib/slavegit subtree merge --prefix=lib/slave --squash projects/slaveprojects/slaveSlave

分行:

掌握项目/奴隶→奴隶

现在我正在我的master分支上工作,提交属于两个项目的文件,一切顺利.现在我想将更改推回到Slave:

  • git checkout奴隶
  • git merge ??? 主

如果我进行正常合并,则每次提交都会获得提交,无论是否lib/slave修改了任何文件.或者我可以做一个--squash只获得一次提交,但我丢失了日志消息.

那么我该如何获得相应的日志消息呢?例如,如果我的master日志历史是:

  • 添加图像到掌握
  • 仅在slave中修改了文件
  • 只有掌握的更多变化
  • 主站和从站中修改过的文件

我希望这个添加到Slave:

  • 仅在slave中修改了文件
  • 主站和从站中修改过的文件

git subtree git-subtree

11
推荐指数
1
解决办法
3375
查看次数

尝试git子树拆分时断言失败错误

我在本地克隆了一个私有的GitHub仓库(我不能在这里分享).我想将此repo中的子文件夹拆分为新的子树仓库.我正在按照这些说明使用Git子树进行存储库分离(在将代码拆分到自己的存储库中).

我的具体命令是:

> git subtree split -P .\plugins\rg-feed-client -b rg-feed-client
Run Code Online (Sandbox Code Playgroud)

但它失败了,正好有24个"断言失败"错误消息,如下所示:

1/     26 (0)2/     26 (1)assertion failed:  [ plugins/rg-feed-client = .\plugins\rg-fee
3/     26 (2)assertion failed:  [ plugins/rg-feed-client = .\plugins\rg-feed-client ]
...
26/     26 (25)assertion failed:  [ plugins/rg-feed-client = .\plugins\rg-feed-client ]
Run Code Online (Sandbox Code Playgroud)

如果我尝试任何其他子文件夹,完全相同.我不知道这里可能有什么问题......帮助!

我的仓库有2个遥控器:原点,以及我添加到我的仓库中的现有子树的遥控器.

windows git github subtree

11
推荐指数
2
解决办法
1020
查看次数