在使用我的脚本从存储库重新编写子树历史后,我将其与git filter-branch ...在同一子树上执行的操作进行了比较.我看到初始提交有不同的sha1,虽然我期望它们是相同的(结果是这两个历史的所有提交都有不同的sha1).
git show --format=raw <commit-sha1>对两个提交执行a 会产生完全相同的输出(第一行除外,即commit <commit-sha1>引入结果).
对象文件完全不同,但由于它们是二进制文件,我无法找出根本原因.
假设所有git版本彼此一致,有什么可以解释为2个不同的sha1?
谢谢
我有以下两个特点:
trait Filter {
type Message;
fn is_valid(&self, message: &Self::Message) -> bool;
}
trait Client {
type Message;
fn send(&self, message: &Self::Message) -> Result<(), Error>;
}
Run Code Online (Sandbox Code Playgroud)
我想要一个Filter和Client使用相同Message类型的实现。
struct ClientWithFilter<C: Client, F: Filter> {
filter: F,
client: C,
}
impl<C: Client, F: Filter> ClientWithFilter<C, F> {
/// C::Message or F::Message???
fn check_and_send(&self, message: &C::Message) -> Result<(), Error> {
if self.filter.is_valid(message) {
self.client.send(message)
} else {
Err(Error::MessageInvalid)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不编译:
if self.filter.is_valid(message) {
| ^^^^^^^ …Run Code Online (Sandbox Code Playgroud)