小编Mik*_*nen的帖子

Git - How to fix "corrupted" interactive rebase?

I managed to create a little mess in my local git repository. I was trying to fix a broken commit by using the following instructions. Before running the "git commit --amend" (and after the git rebase --interactive) I decided that my changes were incorrect and so I executed "git reset HEAD --hard". Not a good idea, I tell you.

现在,交互式基础似乎被"卡住了".Git将当前分支显示为(| REBASE-m).我的存储库中的每个命令(cd ..,ls,git rebase ...)都会出现以下错误:

cat:.git/rebase-merge/head-name:没有这样的文件或目录

以下是git rebase --abort的样子:

$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory …
Run Code Online (Sandbox Code Playgroud)

git msysgit git-rebase

124
推荐指数
8
解决办法
7万
查看次数

TeamCity命令行构建运行器:如何使构建失败?

我们使用TeamCity的命令行构建运行器来调用bat文件.bat文件通过调用Visual Studio 2008的"devenv.exe"构建我们的解决方案,然后执行单元测试并创建正确的文件夹结构.

如果对devenv的调用失败并使TeamCity意识到构建失败,我们想要做的是停止执行bat文件.我们可以通过检查ErrorLevel(如果构建失败时为1)来捕获失败的devenv调用,并且我们可以在那时退出我们的bat文件.但是我们怎么能告诉TeamCity构建失败了呢?

这是我们尝试过的:

call "build.bat"
IF ERRORLEVEL 1 EXIT /B 1
Run Code Online (Sandbox Code Playgroud)

但是TeamCity无法识别我们的退出代码.相反,构建日志如下所示:

[08:52:12]: ========== Build: 28 succeeded or up-to-date, 1 failed, 0 skipped ==========
[08:52:13]: C:\_work\BuildAgent\work\bcd14331c8d63b39\Build>IF ERRORLEVEL 1 EXIT /B 1 
[08:52:13]: Process exited with code 0
[08:52:13]: Publishing artifacts
[08:52:13]: [Publishing artifacts] Paths to publish: [build/install, teamcity-info.xml]
[08:52:13]: [Publishing artifacts] Artifacts path build/install not found
[08:52:13]: [Publishing artifacts] Publishing files
[08:52:13]: Build finished
Run Code Online (Sandbox Code Playgroud)

因此,TeamCity将报告构建成功.我们该如何解决这个问题?

解:

TeamCity提供了一种称为服务消息的机制,可用于处理这种情况.我已将构建脚本更新为如下所示:

IF %ERRORLEVEL% == 0 GOTO …
Run Code Online (Sandbox Code Playgroud)

teamcity command-line visual-studio-2008 teamcity-5.1

27
推荐指数
1
解决办法
8631
查看次数

WinRT应用程序和区域设置.根据用户的区域设置格式化日期和数字的正确方法?

关于用户的区域设置,我在Windows 8 Metro应用程序(XAML和C#)中遇到了一些问题.似乎应用程序不会尊重用户的区域设置,因此即使您的Windows 8设置为以芬兰语格式显示日期和时间,应用程序仍将使用美国格式显示它们.但这是一个很大的问题,必须有一些我不知道的东西?

为了测试这一点,我首先创建了一个WPF应用程序.应用程序只打印出CurrentCulture和格式化的DateTime.Now:

    private void Culture_Loaded_1(object sender, RoutedEventArgs e)
    {
        this.Culture.Text = System.Globalization.CultureInfo.CurrentCulture.DisplayName;
    }

    private void Date_Loaded_1(object sender, RoutedEventArgs e)
    {
        this.Date.Text = DateTime.Now.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

这是我的默认区域设置: 区域设置

运行时,应用程序以芬兰语格式显示日期:

芬兰格式

然后我将区域设置更改为美国: 美国区域设置

当应用程序再次运行时,文化和格式发生了变化: 美国wpf格式化

就像我期望一切正常工作,这也是我期望WinRT应用程序的工作方式.

因此,下一步,我使用相同的代码创建了一个WinRT(XAML和C#)应用程序,并将区域设置恢复为芬兰语.问题:

Winrt格式化

即使我通过区域设置定义格式应为"芬兰语",WinRT应用程序也会以美国格式显示日期时间.然后我修改了应用程序的项目文件,并使fi-FI成为默认语言:

默认语言

此更改还修改了应用程序的文化:

芬兰冬季格式

奇怪.我将默认语言更改回其默认值,格式化已恢复为美国.然后我在项目中创建了文件夹"Strings-fi-FI",并在项目中添加了一个空的"Resources.resw".这个空文件似乎已经足够了,因为我现在正在使用芬兰格式:

资源文件 芬兰格式

只要删除空资源文件,格式就会恢复为美国:

资源文件已删除 美国格式winrt

很奇怪.

这导致了一些问题,但我认为主要的问题是:WinRT应用程序是否故意不遵循用户的区域设置(如WPF应用程序)?

c# xaml currentculture windows-runtime windows-store-apps

21
推荐指数
2
解决办法
9318
查看次数

使用自定义标头的异步WCF客户端调用:此OperationContextScope正在按顺序处理

我正在从WinRT应用程序调用WCF服务.该服务要求为身份验证设置一些标头.问题是如果我同时多次调用服务,我会得到以下异常:

此OperationContextScope正在按顺序处理.

当前代码如下所示:

public async Task<Result> CallServerAsync()
{
    var address = new EndpointAddress(url);
    var client = new AdminServiceClient(endpointConfig, address);

    using (new OperationContextScope(client.InnerChannel))
    {
        OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = GetHeader();

        var request = new MyRequest(...); 
        {
            context = context,
        };

        var result = await client.GetDataFromServerAsync(request);
    }
}
Run Code Online (Sandbox Code Playgroud)

从文档中找到了以下评论:

不要在OperationContextScope块中使用异步"await"模式.当继续发生时,它可以在不同的线程上运行,而OperationContextScope是特定于线程的.如果需要为异步调用调用"await",请在OperationContextScope块之外使用它.

所以我似乎错误地调用了该服务.但是正确的方法是什么?

c# wcf asynchronous wcf-client

20
推荐指数
3
解决办法
7022
查看次数

Reactive Extensions:批量处理事件+在每批之间添加延迟

我有一个应用程序,在某些时候几乎同时引发了1000个事件.我想要做的是将事件批处理为50个项目的块,并开始每10秒处理一次.在开始新的批处理之前,无需等待批处理完成.

例如:

10:00:00: 10000 new events received
10:00:00: StartProcessing (events.Take(50))
10:00:10: StartProcessing (events.Skip(50).Take(50))
10:00:15: StartProcessing (events.Skip(100).Take(50))
Run Code Online (Sandbox Code Playgroud)

任何想法如何实现这一目标?我认为Reactive Extensions是要走的路,但其他解决方案也是可以接受的.

我试着从这里开始:

        var bufferedItems = eventAsObservable
            .Buffer(15)
            .Delay(TimeSpan.FromSeconds(5)
Run Code Online (Sandbox Code Playgroud)

但是注意到延迟没有像我希望的那样工作,而是所有批次同时开始,但是延迟了5秒.

我也测试了Window方法,但我没有发现任何行为上的差异.我认为Window中的TimeSpan实际上意味着"记录在接下来的10秒内发生的每一个事件:

        var bufferedItems = eventAsObservable
            .Window(TimeSpan.FromSeconds(10), 5)
            .SelectMany(x => x)
            .Subscribe(DoProcessing);
Run Code Online (Sandbox Code Playgroud)

我正在使用Rx-Main 2.0.20304-beta.

c# system.reactive windows-runtime

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

C#动态并使用IEnumerable集合

在今天遇到Massive的一些问题后,我决定创建一个简单的测试程序来说明问题.我想知道,我在这段代码中犯的错误是什么:

var list = new List<string>
               {
                   "Hey"
               };

dynamic data = list.Select(x => x);

var count = data.Count();
Run Code Online (Sandbox Code Playgroud)

最后一行抛出错误:'object'不包含'Count'的定义

为什么"数据"被视为对象?出现此问题是因为我正在调用扩展方法吗?

以下代码有效:

var list = new List<string>
               {
                   "Hey"
               };

dynamic data = list.Select(x => x);

foreach (var s in data)
{
}
Run Code Online (Sandbox Code Playgroud)

为什么在这种情况下"数据"被正确地视为IEnumerable?

c# dynamic

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

jQuery + TableSorter:表为空时出错

jQuery的插件TableSorter似乎没有处理它附加到空表的情况.这有什么好的方法吗?

在我的应用程序中,用户可以过滤和搜索数据,最终他或她将提出不返回任何值的搜索条件.在这些情况下,最好"分离"TableSorter或以某种方式修复它的代码,以便它与空表一起使用.

我目前正在使用这样的插件:

    $("#transactionsTable")
    .tablesorter({ widthFixed: true, widgets: ['zebra'] })
    .tablesorterPager({ container: $("#pager"), positionFixed: false });
Run Code Online (Sandbox Code Playgroud)

这很有效,直到表为空.然后我收到以下错误:

Line: 3
Error: '0.length' is null or not an object
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?是否可以更改脚本,以便只有表格行才有表格才能添加到表格中?

javascript jquery tablesorter exception

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

是否有办法自动使MongoDB C#Driver在主服务器出现故障时不抛出EndOfStreamException?

我一直在测试官方MongoDB C#驱动程序,副本集为3个实例.我创建了一个简单的应用程序,它可以在循环中访问副本集.

我的问题是:当我关闭主服务器时,是否有可能让C#驱动程序自动重新运行查询,而不像现在那样抛出EndOfStreamException?

这是MongoServerSettings的初始化代码:

        var settings = new MongoServerSettings()
        {
            ConnectionMode = ConnectionMode.ReplicaSet,
            ReplicaSetName = "mongors",
            ReadPreference = new ReadPreference(ReadPreferenceMode.PrimaryPreferred),
            SafeMode = SafeMode.True,
            DefaultCredentials = new MongoCredentials("user", "password"),
            Servers = new[] { new MongoServerAddress("server.net", 27020), 
                        new MongoServerAddress("server.net", 27019),
                        new MongoServerAddress("server.net", 27018)}

        };
Run Code Online (Sandbox Code Playgroud)

这是我查询服务器的代码:

        while (true)
        {
            var server = MongoServer.Create(settings);
            var db = server.GetDatabase("db");
            var collection = db.GetCollection<TaggedAction>("actions");
            var query = Query.EQ("_id", id);
            var entity = collection.FindOne(query);

            Console.WriteLine(DateTime.Now +" " + entity.ActionName);

            Thread.Sleep(2500);
        }
Run Code Online (Sandbox Code Playgroud)

如果我关闭主服务器,客户端会抛出以下异常:

System.IO.EndOfStreamException was unhandled
  HResult=-2147024858
  Message=Attempted …
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-.net-driver

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

GIT-SVN克隆命令执行时没有错误,但缺少本地主分支

我正在尝试使用GIT-SVN,但是我遇到了问题.我可以克隆svn-repository(或者使用git svn init然后使用git svn fetch)而不会出现任何错误,但是在命令停止处理之后,git存储库为空,并且没有本地主分支.

我的svn存储库位于:

https://开头本地主机:8443/SVN /项目

项目文件夹的结构如下:

/projectA/trunk
/projectA/branches
/projectA/tags

/projectB/trunk
/projectB/branches
/projectB/tags
Run Code Online (Sandbox Code Playgroud)

(注意,branches和tags-folders为空,trunk-folder包含文件).

我正在尝试克隆项目,所以我使用了这个命令:

git svn clone --username myUsername https://localhost:8443/svn/projects/ gitFolder --trunk projectA/trunk --branches projectA/branches --tags projectA/tags
Run Code Online (Sandbox Code Playgroud)

处理大约需要10分钟,并将所有文件名输出到屏幕.最后一行看起来像这样:

r233 = 2bfb031dda74e0ae8340688892197d647729b256 (refs/remotes/trunk)
Run Code Online (Sandbox Code Playgroud)

现在,如果我切换到gitFolder并输入git log,我会得到:致命:错误的默认修订版'HEAD'.

git branches -a 报告这个:

遥控器/中继.

gitFolder中有一个.git文件夹,但没有别的.我也尝试过git svn initgit svn fetch不是git svn clone最终结果是相同的.

有什么想法发生了什么?提前致谢.

更新:

刚刚意识到最后一行(r233 = 2bf ...)必须指向修订号.所以最后处理的svn修订版是233.我已经多次重新测试了这个,并且git-svn克隆总是在修订版233之后停止.问题是原始的svn存储库包含超过10100个修订版.我不确定为什么git-svn会在它之前停止,因为没有任何错误或警告.是否有某个日志文件可以提供更多线索?

另一个更新:

我能够解决我的问题.这是由VisualSVN(版本2.1.3)和Msysgit(版本1.7.0.2-preview20100309)之间的通信问题引起的.似乎在某些时候git-svn只是失去了与VisualSVN服务器的连接而无法显示错误而只是关闭.从http协议切换到svn协议解决了这个问题.

在VisualSVN中使用svn-protocol非常简单:

  1. 转到VisualSVN的bin文件夹
  2. 输入"svnserve --daemon"

您可以使用TortoiseSVN并将其指向您的存储库来检查一切是否正常工作:svn:// localhost/repositories/myProject

svn git git-svn

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

从C#中的句子中修剪太长的单词?

我有C#字符串,其中包含句子.有时候这些句子都可以,有时它们只是用户生成的随机字符.我想做的是修剪这些句子中的单词.例如,给定以下字符串:

var stringWithLongWords = "Here's a text with tooooooooooooo long words";
Run Code Online (Sandbox Code Playgroud)

我想通过过滤器运行:

var trimmed = TrimLongWords(stringWithLongWords, 6);
Run Code Online (Sandbox Code Playgroud)

并获得一个输出,其中每个单词最多只能包含6个字符:

"Here's a text with tooooo long words"
Run Code Online (Sandbox Code Playgroud)

有什么想法可以通过良好的性能来完成吗?.NET中有什么可以自动处理的吗?

我目前正在使用以下代码:

    private static string TrimLongWords(string original, int maxCount)
    {
        return string.Join(" ", original.Split(' ').Select(x => x.Substring(0, x.Length > maxCount ? maxCount : x.Length)));
    }
Run Code Online (Sandbox Code Playgroud)

这在理论上是有效的,但如果长词以空格之外的分隔符结尾,则它会提供不良输出.例如:

这是sweeeeeeeeeeeeeeeet!还有更多.

结尾看起来像这样:

这是sweeeeeeee还有更多.

更新:

好的,评论非常好,我意识到这可能有太多"假设".如果忘记分隔符也许会更好.相反,如果一个单词被修剪,它可以用三个点显示.以下是一些修剪最多5个字符的示例:

现代启示录! - > Apoca ...现在!

启示! - > Apoca ......

!例! - >!考试......

这是sweeeeeeeeeeeeeeeet!还有更多. - >这很好......还有一些......更多.

c#

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