小编Chr*_*egg的帖子

致命:git-write-tree:构建树的错误

我正在尝试使用git-svn将一个大型的subversion存储库导入git(这样我可以在git中工作,但仍然不时地提交subversion).导入超过4000个修订后,我现在每次运行时都会收到以下错误,git svn fetch或者git svn rebase我无法摆脱:

$ git svn fetch
error: invalid object 100644 1f2....742 for 'src/path/.../file.cs'
fatal: git-write-tree: error building trees
write-tree: command returned error: 128
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

  • git fsck --full不报什么,同样没有git fsck --unreachablegit fsck --no-reflog
  • git gc --aggressive 没有帮助
  • 移动单包文件并重新导入它git unpack-objects没有帮助
  • git svn reset -rXYXY略低于最新导入的revsion似乎也没有帮助,也没有手动从reflog最高XY中删除最新的条目.
  • 重启.听起来很傻,但我确实在导入第一个~4000版本时发现了一些奇怪的问题,好像有什么东西泄漏了很多内核资源(很可能是在windows子系统中),可能与msys/mingw(或者avira病毒扫描程序,我禁用了测试).

我也没有找出128真正代表的错误.有任何想法吗?提前致谢!

可能与此问题有关,该问题也与错误128相关,但具有不同的错误消息,并且没有解决方案.

1.6.4.msysgit.0在xp sp3上使用bash的msysgit版本

git git-svn corruption msysgit

18
推荐指数
2
解决办法
1万
查看次数

FAKE模式将目标构建顺序与依赖项分开

在VS中,Build(incremental)和Rebuild之间通常有区别,后者首先要清理,然后像Build一样.我能用FAKE提供类似的行为吗?

我们假设以下目标:

Target "Clean" DoNothing
Target "Work" DoNothing
Target "All" DoNothing

RunTargetOrDefault "All"
Run Code Online (Sandbox Code Playgroud)

通常我想运行所有这些,在工作前清洁,所以我最终得到:

"Clean" ==> "Work" ==> "All"
Run Code Online (Sandbox Code Playgroud)

但是,Work并不是真正依赖Clean - 只有两者都要运行时才能运行Clean.使用上面的依赖链,我无法运行Work而不首先运行Clean.是否有方法或共同模式来支持这一点?

到目前为止我考虑过的事情:

一个)

"Clean" ==> "All"
"Work" ==> "All"
Run Code Online (Sandbox Code Playgroud)

这正确地表示了All的依赖关系,但是在工作之前清理应该是的顺序 - 如果两者都运行 - 都缺失了.

B)

Target "WorkOnly" DoNothing
"WorkOnly" ==> "Work"
"Clean" ==> "Work" ==> "All"
Run Code Online (Sandbox Code Playgroud)

这有点接近,但它仍然无法保证在WorkOnly之前构建All that Clean将运行

C)

Target "Start" DoNothing
"Start"
  =?> ("Clean", not (hasBuildParam "noclean"))
  ==> "Work"
  ==> "All"
Run Code Online (Sandbox Code Playgroud)

这样,除非我指定"noclean"作为参数,否则Clean将始终运行.这似乎完全支持我的场景,实际上非常灵活,但如果有多个可选阶段,可能会有点复杂.

这是预期的方式以及其他人如何做到这一点,还是我错过了一些明显的东西?

f#-fake f#-fake-4

9
推荐指数
2
解决办法
1308
查看次数

F#Func类型推断Seq和PSeq ToDictionary之间的区别

给出一个简单的元组序列,以及使用F#PowerPack的PSeq的并行序列:

let a = Seq.singleton (1,"a")  --> val a: seq<int * string>
let b = a |> PSeq.map id       --> val b: pseq<int * string>
Run Code Online (Sandbox Code Playgroud)

现在我想从他们创建一个.Net BCL字典:

let bd = b.ToDictionary(fst, snd, HashIdentity.Structural)
let ad = a.ToDictionary(fst, snd, HashIdentity.Structural)
let ad2 = a.ToDictionary(fst, snd)
let ad3 = a.ToDictionary((fun (x,y) -> x), (fun (x,y) -> y), HashIdentity.Structural)
Run Code Online (Sandbox Code Playgroud)

虽然let bd有效let ad但无法编译,因为它无法推断类型并正确转换为BCL的Func.有趣的是,如果我省略第三个参数let ad2,或者如果我写出来fstsnd手动内联,它就可以正常工作let ad3.

该表达式应该具有类型Func <(int*string),'a>但这里有类型'b*'c - >'b

  • 为什么不let ad …

f# f#-3.0 f#-powerpack

7
推荐指数
1
解决办法
470
查看次数

防止`dotnet pack --no-build`触发构建并导致NETSDK1085

我希望在运行以下两个命令时,后者不会触发新构建:

  1. dotnet build solution.sln --configuration Release
  2. dotnet pack solution.sln --configuration Release --no-restore --no-build

但是,由于 .NET Core SDK 3.0.100,第二个命令对我来说总是失败并出现以下错误:

C:\Program Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(133,5):
error NETSDK1085: The 'NoBuild' property was set to true but the 'Build' target was invoked.
Run Code Online (Sandbox Code Playgroud)

我想它无法构建是一件好事,因为我确实明确要求它不构建。但是为什么会触发构建--no-build

我实际上想要做的是一次性对所有构建的程序集进行代码签名(证书,而不是强命名),然后将它们全部打包到它们的 NuGet 包中:

  1. 为所有目标框架构建解决方案的所有项目
  2. 一次性对所有程序集进行代码签名(因此我不必为每个程序集输入密码)
  3. 将解决方案的所有项目打包为 NuGet 包

这也是为什么pack不触发新构建并覆盖已签名程序集很重要的原因。

因此我的问题是:

  • 首先是什么触发了构建?
  • 或者,我如何首先找出触发构建的原因?

msbuild .net-core

7
推荐指数
0
解决办法
564
查看次数

DebuggerTypeProxy用于泛型类型层次结构

我正在尝试在Math.NET Numerics中为矩阵和向量编写调试器类型代理/代理,因此调试器显示更多有用的信息(也在F#FSI中).类型层次结构如下:

  • Generic.Matrix<T>
  • Double.Matrix : Generic.Matrix<double>
  • Double.DenseMatrix : Double.Matrix

什么有效

具有封闭泛型类型的非泛型代理.如果代替Matrix<double>构造函数接受a Double.Matrix或a,它也可以以相同的方式工作Double.DenseMatrix.

public class MatrixSummary
{
    public MatrixSummary(Matrix<double> matrix) { }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后,用以下内容装饰Double.DenseMatrix:

[DebuggerTypeProxy(typeof(MatrixSummary))]
Run Code Online (Sandbox Code Playgroud)

我想做什么

我不希望为每种类型实现单独的代理,所以让它通用:

public class MatrixSummary<T> where T : ...
{
    public MatrixSummary(Matrix<T> matrix) { }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后,用以下内容装饰Double.DenseMatrix:

[DebuggerTypeProxy(typeof(MatrixSummary<>))]
Run Code Online (Sandbox Code Playgroud)

或者关闭:

[DebuggerTypeProxy(typeof(MatrixSummary<double>))]
Run Code Online (Sandbox Code Playgroud)

和/或如果需要,也可以将该属性添加到基类.

这些都不起作用,例如在调试单元测试时,即使文档说它在使用开放泛型类型(即MatrixSummary<>)声明属性时应该工作.毕竟它也适用于List<T>等等.

有任何想法吗?

有关:

c# debugging mathnet-numerics math.net

5
推荐指数
1
解决办法
1016
查看次数