小编Chr*_*ian的帖子

结合Git存储库的前两个提交?

假设您有一个包含三个提交A,BC的历史记录:

A-B-C
Run Code Online (Sandbox Code Playgroud)

我想将两个提交AB组合到一个提交AB:

AB-C
Run Code Online (Sandbox Code Playgroud)

我试过了

git rebase -i A
Run Code Online (Sandbox Code Playgroud)

这打开了我的编辑器,其中包含以下内容:

pick e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)

我改成这个

squash e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)

然后Git 1.6.0.4说:

Cannot 'squash' without a previous commit
Run Code Online (Sandbox Code Playgroud)

有办法还是不可能?

git rebase git-rebase git-rewrite-history

194
推荐指数
5
解决办法
4万
查看次数

如何恢复因硬盘故障而损坏的Git对象?

我遇到了硬盘故障导致Git存储库的某些文件损坏.运行时,git fsck --full我得到以下输出:

error: .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack SHA1 checksum mismatch
error: index CRC mismatch for object 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid code lengths set)
error: cannot unpack 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid stored block lengths)
error: failed to read object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa at offset 276988017 from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack
fatal: object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa is corrupted
Run Code Online (Sandbox Code Playgroud)

我有存储库的备份,但包含包文件的唯一备份已经损坏了.所以我认为我必须找到一种方法从不同的备份中检索单个对象,并以某种方式指示Git生成一个只有正确对象的新包.

你能否告诉我如何修复我的存储库?

git corruption data-recovery

92
推荐指数
3
解决办法
9万
查看次数

DateTime.Now.Ticks如何正常工作?

在我的应用程序中,我随机生成文件.为了确保独特的命名,我尝试使用自1970年1月1日以来的纳秒时间:

long time = DateTime.Now.Ticks;
String fileName = Convert.ToString(time);
Console.WriteLine(fileName);
Run Code Online (Sandbox Code Playgroud)

现在我发现了一些奇怪的东西.为什么输出是这样的?我的意思是为什么最后4个数字总是一样的?我可以使用它作为文件名,这不是问题,但我只是想知道它.

634292263478068039
634292263512888039
634292263541368039
634292263603448039
634292263680078039
Run Code Online (Sandbox Code Playgroud)

.net c# datetime

47
推荐指数
4
解决办法
10万
查看次数

如何使用OpenStreetMap进行地理编码和路由?

由于Google Maps API在以色列不可用(请参阅此处),我想使用OpenStreetMap.我对所有不同的地理编码方式感到困惑,即找到lat,地址为long.

我也在寻找最佳的路由方式,即使用OSM在两个位置之间显示路由.

我在客户端上寻找JavaScript,在我的服务器上寻找.NET.

我也在寻找一种可以与希伯来语中的名字一起使用的解决方案,但我不认为这是一个限制.

api routing openstreetmap geocode

28
推荐指数
2
解决办法
5万
查看次数

你在每个地方使用1-3个字母变量吗?

我注意到,在C#中我使用非常短的变量名称.我的代码被污染了

foreach(var (v|f|i) in SOMETHING)

for(int (i|n|z)=0

var (ret|r) = blah();
...
return ret;

var sw = new StringWriter();

using(var r = cmd.ExecuteNonQuery()) {
    while(r.Read()) {
        r.GetSomething(3)
Run Code Online (Sandbox Code Playgroud)

我不知道这是坏还是不好.我当然可以读它.我没看过5个月前或更早的代码所以我不能说我是否理解旧代码.我的所有函数都很简短并且做了一件事,所以通过阅读函数可以很好地了解变量是什么,特别是因为函数中的函数是<= 5vars.

人们常常大吼大叫我没有使用好的变量名.我没有使用好的变量名称或者这样可以吗?

c# language-agnostic variables coding-style

14
推荐指数
8
解决办法
2006
查看次数

迭代器块在IL中生成try-fault

在尝试使用迭代器块之后,我注意到生成的IL代码不是我期望的那样.而不是try-finally块,生成了一个try-fault块,这是我从未见过的.我注意到编译器不允许我在'手写'C#中使用fault关键字.

2之间有什么区别吗?

C#代码:

static IEnumerable<string> ReadAllLines(string fileName)
{
    using (var file = System.IO.File.OpenText(fileName))
    {
        string s;
        while ((s = file.ReadLine()) != null)
        {
            yield return s;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

MSIL代码:

.method private hidebysig newslot virtual final instance bool MoveNext() cil managed
{
    .override [mscorlib]System.Collections.IEnumerator::MoveNext
    .maxstack 3
    .locals init (
        [0] bool CS$1$0000,
        [1] int32 CS$4$0001,
        [2] string CS$0$0002,
        [3] bool CS$4$0003)
    L_0000: ldarg.0 

    // try body

    L_008d: leave.s L_0097
    L_008f: ldarg.0 
    L_0090: call instance void ConsoleApplication2.Program/<ReadAllLines>d__0::System.IDisposable.Dispose()
    L_0095: nop 
    L_0096: endfinally …
Run Code Online (Sandbox Code Playgroud)

.net c# cil

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

Chocolatey如何知道本地安装了哪些软件包?

Chocolatey如何确定本地系统上安装了哪些软件包?

以某种方式choco list -localonly列出本地安装的包并nuget.exe在此过程中调用.在NuGet我知道packages.config列出已安装的软件包,但在Chocolatey我似乎找不到类似的文件.

chocolatey

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

是否有充分的理由让AssemblyVersion和AssemblyFileVersion匹配?

宪兵AvoidAssemblyVersionMismatchRule以下描述:

此规则检查[AssemblyVersion]匹配两者[AssemblyFileVersion]何时出现在程序集中.部署应用程序后,在两个属性中具有不同的版本号可能会造成混淆.

例如,此规则会警告Microsoft System.dll具有以下属性:

[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.50727.3053")]
Run Code Online (Sandbox Code Playgroud)

我不同意宪兵的规则.接下来它将使您无法使用类似于Microsoft使用的版本控制方案,即

  • 更新AssemblyFileVersion每个构建,
  • 改变AssemblyVersion只在公共接口或其他大的变化,
  • 确保AssemblyVersionAssemblyFileVersion共享一个共同的前缀,

我认为这个版本控制方案是为什么能够区分AssemblyVersionAssemblyFileVersion首先区分的设计原因.

我无法想出为什么强制两个装配属性相等是一个好习惯,但也许你可以!我会对你的意见感兴趣.

如果确实没有充分的理由,我很快会建议宪兵开发者将规则改为

当规则内部存在两个前缀,此规则检查[AssemblyVersion]并且具有公共的非空前缀.[AssemblyFileVersion]

.net versioning attributes assemblyinfo gendarme

10
推荐指数
1
解决办法
1190
查看次数

将std :: string从C++ DLL返回到ac#program - >为RtlFreeHeap指定的无效地址

在我的C++ DLL中的一个函数中,我将一个std :: string返回给我的c#应用程序.它几乎看起来像这样:

std::string g_DllName = "MyDLL";

extern "C" THUNDER_API const char* __stdcall GetDLLName()
{
    return g_DllName.c_str();
}
Run Code Online (Sandbox Code Playgroud)

但是当我的C#代码调用此函数时,我在输出窗口中收到此消息:

Invalid Address specified to RtlFreeHeap( 00150000, 0012D8D8 )
Run Code Online (Sandbox Code Playgroud)

c#中的函数声明如下所示:

[DllImport("MyDll", EntryPoint = "GetDLLName")]
    [return: MarshalAs(UnmanagedType.LPStr)]
    public static extern string GetDLLName();
Run Code Online (Sandbox Code Playgroud)

从我在网上找到的内容来看,有时这个消息会出现在与删除一起使用的新版本(调试版或发布版等)之间存在不一致的情况.但我不确定这是不是我的情况.所以我不确定究竟是什么导致了它.也许MashallAs可能与它有关?

有任何想法吗?

谢谢!

c# c++ string marshalling

9
推荐指数
1
解决办法
6499
查看次数

Visual Studio - 确定项目中没有代码行的行

Visual Studio - 确定项目中没有项目代码行 - 这在VS 2008中是否可行?

lines-of-code code-metrics visual-studio

6
推荐指数
1
解决办法
4894
查看次数