所以我使用git-subtree在repoA的子目录中拥有repoB的各种分支,就像这样
git clone repoA
cd repoA
// some commits to repoA here
git subtree add --prefix=src/dirA repoB branchA
Run Code Online (Sandbox Code Playgroud)
我在repoA中使用了一些提交
git subtree push --prefix=src/dirA repoB branchA
Run Code Online (Sandbox Code Playgroud)
一段时间后,我从另一个repoC中提交了一些repoB/branchA,其中branchA也是使用git-subtree添加的.
现在,我试试
git subtree pull --prefix=src/dirA repoB branchA
Run Code Online (Sandbox Code Playgroud)
但是,我没有明显的理由得到合并冲突.这些变化很简单,根本没有冲突 - 正如补丁所证实的那样.
我不确定如何解决这个错误.我已经找到了另外四个处理相同/类似问题的线程:
我不确定这与不同的SHA-1有关,因为我没有重新提交我的提交,也没有编辑它们; 链接1到3.
我的问题更像是链接4,其中git奇怪地无法进行简单的合并.但是,链接3讨论了子树合并策略,特别是git-subtree,所以我不确定这在我的情况下是否适用.
虽然情况看起来是一样的:
<<<<<<< HEAD
=======
// changes from commit I try to pull from repoB/branchA
>>>>>>> {commit SHA-1 from commit I try to pull from repoB/branchA}
Run Code Online (Sandbox Code Playgroud)
所以我注意到BASE在三向合并窗口(kdiff3)中显然是错误的.但是,如果是这种情况,为什么git尝试不应用所有早期的提交?发行
git log --oneline …
Run Code Online (Sandbox Code Playgroud) 我搜索的范围很广,网上的信息似乎暗示使用预处理器的条件编译仅适用于环境变量.
基本上,我希望内联函数或宏基于其输入参数执行不同的操作.我想要实现的例子:
inline void foo(int x) {
#if (x < 32)
register0 |= (1 << x);
#else
register1 |= (1 << (x - 32));
#endif
}
Run Code Online (Sandbox Code Playgroud)
这里的主要目标是生成的内联代码不包含常量输入的条件代码.
基本上,我目前正在为一个微控制器(lpc213x)编程,并希望有一个内联函数或宏来进行引脚配置设置.由于引脚配置分为多个寄存器(例如上面的0和1),我想执行一些条件检查以确定应该为给定的引脚常数写入哪个寄存器.
但是,引脚配置在编译时都是常量,所以我想从编译代码中消除条件检查.我知道无论如何优化都可能摆脱不必要的条件,但我想知道是否有办法明确地实现这种行为,因为我可能需要在将来禁用优化.
谢谢,
FROB
我目前正在使用 Modelsim 10.1 和 ISE 13.4 并运行一个非常简单的测试平台。所有代码都是VHDL。
前assert
几天我在使用 VHDL 的声明时遇到了麻烦:错误和警告被输出到抄本。但是,消息查看器中没有消息,波形窗口中也没有消息指示器。如果这很重要,我会从 ISE 内部开始我的模拟。
我想我可能缺少一个开关来打开消息记录或其他东西,但数小时的谷歌搜索没有带来任何东西。是否有任何设置会阻止消息被记录到消息查看器,尽管它会被打印到脚本中?
我已经找到了Simulate->Runtime Options-->Message Severity
。但是,那里的一切都未经检查。勾选任何复选框会产生不打印到抄本的预期行为,但消息查看器中仍然没有任何消息的迹象。
谢谢你的时间,
罗伯特
编辑:
好吧,经过一番折腾,终于找到了。
必须将msgmode
和displaymsgmode
选项设置为至少both
具有良好的消息指示器。这似乎是在我公司早期 ModelSim 版本的默认配置中完成的。
我希望像我这样无知的人发现这个答案有帮助:)
只是想知道关于 C 中 I²C 寄存器映射的最佳实践是什么,或者其他人经常/更喜欢使用什么。
到目前为止,我通常做了很多定义,一个用于每个寄存器,一个用于所有位、掩码、移位等。然而,最近我看到一些驱动程序使用(可能是打包的)结构而不是定义。我认为这些是 Linux 内核模块。
反正他们会
struct i2c_sensor_fuu_registers {
uint8_t id;
uint16_t big_register;
uint8_t another_register;
...
} __attribute__((packed));
Run Code Online (Sandbox Code Playgroud)
然后他们会使用 offsetof(或宏)来获取 i2c 寄存器并使用 sizeof 来读取要读取的字节数。
我发现这两种方法都有其优点:
结构方法:
定义方法:
基本上,我正在寻找一种更智能的方法来处理这些情况。我经常发现自己为每个寄存器和每个位键入了大量令人痛苦的长符号名称,还可能还有掩码和移位(后两个取决于数据类型),结果只使用其中的几个(但讨厌稍后重新定义丢失的符号,这就是我在一个会话中输入所有内容的原因)。不过,我注意到要读/写的字节大小大多是幻数,通常需要并排阅读数据表和源代码才能理解最基本的交互。
我想知道其他人如何处理这些情况?我在网上找到了一些例子,其中人们还在大标题中费力地输入每个寄存器、位等,但没有什么是确定的......但是,在这一点上,上述两个选项似乎都不太聪明:(