小编eco*_*fey的帖子

origin/HEAD如何设置?

我有一个分支设置来跟踪ref in origin. git checkout <branchname>切换到那个分支,一个git status将显示我的分支从原点到前方或后方的距离,但我origin/HEAD仍然感到惊讶,仍然指向origin/master,而不是origin/<branchname>

所以我的问题是,在什么情况下起源/ HEAD会被移动?

编辑:

我很欣赏有关如何移动origin/HEAD 的答案,但我对"有机"移动它感兴趣,除了明确告诉它这样做之外.

例如,当我切换分支时,git使HEAD指向我正在检出的分支,所以我很惊讶origin/HEAD不会以相同的方式移动.

git

131
推荐指数
5
解决办法
15万
查看次数

FileVersionInfo和AssemblyInfo

鉴于Blah.dll的AssemblyInfo.cs的这个片段:

[assembly: AssemblyVersion("3.3.3.3")]
[assembly: AssemblyFileVersion("2.2.2.2")]
Run Code Online (Sandbox Code Playgroud)

然后在一个单独的.exe中:

var fileInfo = FileVersionInfo.GetVersionInfo("/path/to/Blah.dll");
fileInfo.ProductVersion == fileInfo.FileVersion == true;
Run Code Online (Sandbox Code Playgroud)

其他SO问题显示ProductVersion是"正确的",如果对我如何使用它有些奇怪的话会很奇怪.

ProductVersion不应该是"3.3.3.3"而FileVersion应该是"2.2.2.2"吗?什么会导致它将这两个属性报告为AssemblyFileVersion?

.net c# versioning version-control version

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

使用Rack :: Session :: Cookie删除当前会话

我觉得我在这里遗漏了一些明显的东西,我希望我发布这个时候有人会因为我失踪的谷歌搜索链接而感到羞耻:-)

enable :sessions

get '/logout' do
  # What goes here to kill the session?
end
Run Code Online (Sandbox Code Playgroud)

ruby session rack sinatra

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

CLR对'throw'做了什么?

当我正在开展一个项目时,我心里想着"嗯,记录一条消息会非常方便,然后用相同的消息抛出异常".由于这会让我保持"特殊情况下的例外"原则,但仍然要确保我们记录有关系统出错的详细信息.

因此,这导致:

public static class LogAndThrow
{
    public static void Message<TException>(string message) where TException : Exception
    {
        // Log message here

        var constructor = 
            typeof(TException).GetConstructor(new[] { typeof(string) });

        throw (TException)constructor.Invoke(new[] { message });
    }
}
Run Code Online (Sandbox Code Playgroud)

当然它有点粗糙(我把这篇文章剪下来了),但它确实有效.

然而,作为通过反射构建异常的人的类型,我很恼火,堆栈跟踪将被"玷污"LogAndThrow.Message()行.

所以我开始解决这个问题:-)

我能够用一些序列化和其他技巧替换堆栈跟踪,所有这些都非常愚蠢,而且非常蛮力.但我想解决这个问题只是因为.

但我发现了一些好奇的东西:

var exception = new Exception();
throw exception;
Run Code Online (Sandbox Code Playgroud)

在创建该异常之后,但在抛出之前,唯一设置的是Message.堆栈跟踪等是空的.

以上等同于以下IL:

.locals init (
    [0] class [mscorlib]System.Exception exception)
nop 
newobj instance void [mscorlib]System.Exception::.ctor()
stloc.0 
ldloc.0 
throw 
Run Code Online (Sandbox Code Playgroud)

在我看来,IL'for throw'正在做的不仅仅是采用该引用并将其向上移动.

当达到IL'throw'时,有没有人知道运行时对堆栈的异常做了什么?

我们在下面用来改变堆栈的技巧与我认为的"魔法"有关:

这段代码很可怕也很错误.更多的科学实验比任何应该投入生产的科学实验都要严格

var e = new Exception("message here");
try
{
     throw e;
} …
Run Code Online (Sandbox Code Playgroud)

.net clr cil

3
推荐指数
1
解决办法
632
查看次数

标签 统计

.net ×2

c# ×1

cil ×1

clr ×1

git ×1

rack ×1

ruby ×1

session ×1

sinatra ×1

version ×1

version-control ×1

versioning ×1