小编lar*_*moa的帖子

克隆后存储库中的文件,但没有历史记录

我们之前有一个从Subversion转换过的Mercurial存储库,今天已经注意到存储库中的文件没有任何历史记录.

此行为的一个症状是hg status报告文件是干净的,而hg log报告没有相同文件的更改集:

> hg clone [repo]
> hg st -c FileWithMissingHistory.cs

C  FileWithMissingHistory.cs

> hg blame FileWithMissingHistory.cs
FileWithMissingHistory.cs: no such file in rev [...]
> hg log FileWithMissingHistory.cs
> hg log FileWithMissingHistory.cs -f
abort: cannot follow nonexistent file: "FileWithMissingHistory.cs"

> hg log -v | grep FileWithMissingHistory.cs

[gives output, there arechangesets mentioning the file]
Run Code Online (Sandbox Code Playgroud)

显然,示例中的文件名已更改.我尝试过使用hg验证,但是这个命令报告说repo没问题.有没有人经历过这一点,有什么我们可以做的让历史"恢复生机"?在所讨论的文件上放置虚拟历史记录是可以接受的,但不是最理想的.

编辑: 我已经做了一些调查,并注意到"FileWithMissingHistory.cs"在修订版238中从另一个文件名(hg copy + delete)重命名.如果我执行hg update -r238并且hg登录此版本的文件我做没有任何历史.在原始文件上执行hg登录会按预期报告历史记录,因此在复制过程中似乎会以某种方式丢失历史记录(同样,使用hg副本重命名文件,并且变更集清楚地表明文件已被复制).

mercurial history

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

当变更集较小时,Mercurial是否能更好地合并文件?

假设我有一个名为"myDevelopmentBranch"的功能的开发分支和另一个包含很多变化的分支"myOtherBranch",其中一些将与"myDevelopmentBranch"的内容冲突.将(可能)从"myDevelopmentBranch"合并到"myOtherBranch"的结果会不同于我经常提交的结果,而不是经常提交(例如,每天数次,而不是每周一次或两次)?我想知道这一点,因为我觉得Mercurial(或任何其他VCS)更容易跟踪小块的变化,从而更好地找出如何合并它们.

注意!我知道为什么人们应该经常提交的原因很多,这只是我一直在思考的一个技术问题.

merge mercurial dvcs

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

LINQ将数组[x0,y0,...,xN,yN]转换为可枚举的[p0,...,pN]

是否可以使用LINQ将包含坐标元组(x,y)的双精度平面数组(即[x0,y0,...,xN,yN])转换为包含相同坐标的长度的一半的数组.Point-class,即[p0,...,pN]?

最好是.NET 3.5,但也对4.0感兴趣.

.net c# linq

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

检索所有可用打印机驱动程序的列表(例如"添加打印机向导")

在c#中,我将获得运行系统上安装的所有打印机驱动程序的列表,例如Windows "添加打印机"向导:

我已经能够列出已经安装的打印机,但是如何列出系统上可用的驱动程序?

c# printing driver

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

虚拟前进迭代器?

我查看了STL的前向迭代器.我在任何地方都看不到任何虚拟功能.如果我有一个想要字符串的前向迭代器的库,我怎么能让函数接受任何返回字符串的前向迭代器?我可以使用标准库中的任何内容吗?

c++ iterator

4
推荐指数
1
解决办法
1553
查看次数

LINQ是否会根据输入类型使用专用/优化版本的函数?

如果我使用LINQ执行以下操作:

void DoSomeStuffWithHashSet()
{
  HashSet<int> set = new HashSet<int>();
  for (int i = 0; i < 100; ++i) set.Add(i);
  if (Lookup(set, new Random().NextInt(200))
     System.Console.WriteLine("Yey");
  else
     System.Console.WriteLine("Ney");
}

bool Lookup(IEnumerable<int> haystack, int needle)
{
  // O(N) search or HashSet<int>.Contains()?
  return Enumerable.Contains(collection, needle);
}
Run Code Online (Sandbox Code Playgroud)

Enumerable.Contains()解析为优化的实现,HashSet或者无论输入如何都将执行简单的搜索?

c# linq collections

4
推荐指数
1
解决办法
102
查看次数

qmake生成的Makefile中缺少QtWebKit依赖项

我刚开始使用Qt(用C++编写),所以我按照我在网上找到的"你好,世界"的例子.我在目录hello中创建了程序hello.cpp:

#include <QtGui>

int main(int argc, char *argv[]) {
    QApplication app (argc, argv);
    QLabel label ("Hello, world!");
    label.show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我跑了:

qmake -project
qmake hello.pro
make
Run Code Online (Sandbox Code Playgroud)

一切都正确编译,我能够运行./hello.然后,作为一个冒险的人,我尝试修改文件:

#include <QtGui>
#include <QtWebKit>

int main(int argc, char *argv[]) {
    QApplication app (argc, argv);
    QLabel label ("Hello, world!");
    QWebPage page;
    label.show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我重申了这三个命令,但现在当我运行make时,我收到以下错误:

hello.cpp:2: fatal error: QtWebKit: No such file or directory
compilation terminated.
make: *** [hello.o] Error 1
Run Code Online (Sandbox Code Playgroud)

我检查了Makefile,并将INCPATH变量定义为

INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I.
Run Code Online (Sandbox Code Playgroud)

它显然缺少-I/usr/include/qt4/QtWebKit.LIBS变量也缺少-lQtWebKit.手动添加这些会导致编译成功.我究竟做错了什么?我需要添加什么才能使qmake生成正确的Makefile?

c++ qt qmake makefile file-inclusion

4
推荐指数
1
解决办法
4575
查看次数

如何确定流程是否已启动但尚未退出?

我有一些代码可以创建一个Process实例,然后启动它.有一些逻辑需要检查Process是否已经启动.HasExited可用于检查是否已退出已启动的进程,但我找不到类似的功能HasStarted.乍一看StartTime看起来是一个不错的选择,但是如果进程退出,这个函数将抛出.此外,文档说StartTime只对启动的进程有意义.

确定流程是否已启动(已启动但可能已退出)的"正确"方法是什么?

.net c# system.diagnostics

4
推荐指数
2
解决办法
5795
查看次数

为什么if(true && false); {foo(); 有效吗?

这是一个令人讨厌的错误,花了我半个小时来解决.编译器认为这是有效的代码,当它评估语句时,它仍然会调用foo():

if(true && false);{ foo(); }
Run Code Online (Sandbox Code Playgroud)

为什么它有效,为什么foo()仍然被调用?

.net c#

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

直接从C++调用D函数

我已经浏览了http://dlang.org/cpp_interface.html,并且在所有示例中,即使是那些C++代码调用某些D代码的代码,主函数也驻留在D中(因此被调用的二进制文件是一个从D源文件编译).文档中的"从C++调用D"示例中有一个在D中定义的函数foo,它从C++中的函数栏调用,而bar又从D中的main函数调用.

是否可以从C++函数调用D代码?我正在尝试做类似以下的简单操作,但不断出现构建错误:

在D:

import std.stdio;

extern (C++) void CallFromCPlusPlusTest() {
  writeln("You can call me from C++");
}
Run Code Online (Sandbox Code Playgroud)

然后在C++中:

#include <iostream>

using namespace std;

void CallFromCPlusPlusTest();

int main() {
  cout << "hello world"<<"\n";
  CallFromCPlusPlusTest();
}
Run Code Online (Sandbox Code Playgroud)

c++ interop d

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