小编Wil*_*ert的帖子

使用git-tfs rcheckin将git提交到TFS更改集的一对一映射

上下文

  • 我们有一个带有发布分支的git存储库.
  • 我们有一个TFS回购(目前为空).

我的任务是将git repo的发布分支镜像到TFS,以便git中的每个提交映射到TFS中的变更集.所有开发人员只提交git和(假设)不知道TFS.

阅读rcheckin文档以及相关问题的答案让我相信rcheckin能够做到这一点.

问题

git中的所有提交都被压缩成一个变更集.

复制顺序:

git tfs clone http://tfs:8080 $/tfsrepo
cd tfsrepo
git remote add github git@github.com:REPO/Repo.git
git fetch github
git merge github/release
git tfs rcheckin
Run Code Online (Sandbox Code Playgroud)

这导致单个签入TFS,其中包含所有提交.

其他尝试解决问题

  • 克隆后,合并来自源(git)repo的第一个提交,rcheckin以创建共享库

    • 这有效,但随后git pull github releasegit-tfs rcheckin导致再次挤压.
  • 对于原始仓库中的前几个提交,我将它们逐个合并到git-tfs共享仓库中并在每个仓库之后进行rcheckin.

    • 对于每次提交,这种方式都有效,TFS中有一个变更集.但是,原始提交消息位于"合并的c02436de4f .."消息下面.
    • 即使使用脚本,对每个变更集也是不现实的.
    • 正如patthoyts所指出的,就TFS而言,这将使我成为改变的提交者.

我的问题

我需要做些什么来保持TFS与git-repo的发布分支保持同步,以便git中的每个提交都有相应的TFS变更集?

附加信息

我确实对这两个repos都有管理控制权,如果有必要,我可以重新设置git repo,这意味着所有后果.我只是不想失去我们已经创建的历史.

git version-control tfs git-tfs

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

Microsoft Scrum Process Template 2.1 vs 2.2

Visual Studio TFS Update 2将Scrum Process Template从2.1更新为2.2.

不幸的是,我无法找到有关确切更改的任何信息.

版本之间有什么变化?而且,更重要的是,如何确定哪些更改对我的项目很重要?

tfs scrum tfs-process-template

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

在Visual Studio中对Artifactory上的NuGet进行身份验证

我们有一个本地Artifactory Pro服务器,该服务器提供nuget程序包并使用LDAP对所有用户进行身份验证。从cmdline使用Artifactory-NuGet可以完美地工作,但是当尝试从Visual Studio使用程序包管理器时,身份验证将失败。

我注意到的是,Visual Studio尝试在第一次失败的身份验证尝试后添加域前缀:尝试以“用户”身份登录失败,然后登录身份验证窗口包含“ DOMAIN \ user”作为用户名。

我不确定问题的根源是在Visual Studio中还是在Artifactory中。我注意到对Artifactory的Web访问不接受“ DOMAIN \ user”形式的用户名,即使我认为可以。

所以我的问题是:如何从Visual Studio中对LDAP支持的,由Artifactory提供的经过身份验证的NuGet服务器进行身份验证?

ldap artifactory visual-studio nuget visual-studio-2013

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

如何在Visual Studio 2012中创建HelloWorld COM Interop

首先,我是COM的新手,目前很困惑.我已经在MSDN和一般网络上阅读了很多关于COM的文档,但是很多文档看起来已经过时且过于复杂.

以下是我认为有必要让它发挥作用.它还没有,所以我肯定我错过了一些东西,但是通过给我的食谱,我希望有人能发现问题:

  1. 创建一个C#控制台应用程序项目.我把它命名为CSharpApp
  2. 创建一个C++ ATL项目.我称之为ComLib.Interop.
    • 添加类(模板:ATL简单对象),我称之为"InteropDemo"
    • 在类视图中,右键单击IInteropDemo并添加方法HelloWorld.
  3. (删除,保持编码正确答案.)
  4. 编译.
  5. 将ComLib.Interop.dll的引用添加到CSharpApp.
    • 在已编译的COM dll上调用regsrv32.exe,然后在"添加引用..."的COM选项卡中选择DLL.
  6. 在Program.cs,Main中,创建一个InteropDemo类并调用HelloWorld.
  7. 利润.

感谢答案,我更新了问题,以反映综合解决方案.

.net c++ com com-interop

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

TeamCity代码覆盖C++代码

我们有一个使用C#,C++/Cli和一些原生C++代码的项目.我们使用TeamCity进行构建和测试.

我们使用vstest.console(VS2012测试运行器)运行测试.

对于托管代码,dotCover(集成到TeamCity中)用于代码覆盖.但是,它不适用于本机C++代码(这是预期的).

如何获得代码覆盖率结果我们对原生C++部分的单元测试进入TeamCity?理想情况下,解决方案是免费的.

teamcity unit-testing code-coverage dotcover

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

返回IEnumerable并调用ToArray时出现LINQ意外行为

我注意到LINQ代码中有一些奇怪的行为,并使用两种方法将问题简化为以下最小示例:

IA Find(string n)
{
    IA result;
    if (!_dictionary.TryGetValue(n, out result))
    {
        throw Exception();
    }
    return result;
}

IEnumerable<IA> Find(IEnumerable<string> names)
{
    return names.Select(Find).ToArray();
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作.

现在,我删除了.ToArray(),因此该方法如下所示:

IEnumerable<IA> Find(IEnumerable<string> names)
{
    return names.Select(Find);
}
Run Code Online (Sandbox Code Playgroud)

此更改将导致不抛出异常,即使在_dictionary中找不到某些名称,但在names参数中也存在这些名称.

是什么原因导致LINQ的意外行为(对我而言)?

.net c# linq arrays

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

C#generic constraint:Structs数组

我想创建一个通用约束,其中包含类型为值类型(结构)的数组,类似于:

public class X<T> where T : struct[]
Run Code Online (Sandbox Code Playgroud)

或者可能

public class X<T, U>
    where U : struct
    where T : U[]
Run Code Online (Sandbox Code Playgroud)

但这不起作用.似乎System.Array不能用作类型约束.

那么 - 如何将泛型参数约束为结构数组?

第一个回答后更新:

public interface IDeepCopyable<T>
{
    T DeepCopy(T t);
}


public class DeepCopyArrayOfValueTypes<T> : IDeepCopyable<T>
    where T : is an array of value types
{
    T Copy(T t) {...}
}
Run Code Online (Sandbox Code Playgroud)

c# arrays generics value-type generic-constraints

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

C#将结构数组复制到双精度数组

[StructLayout(LayoutKind.Sequential)]
public struct Demo
{
    double X;
    double Y;
}


var data = new Demo[128];

FillWithMeaningfulValues(data);

double[] doubles;

Copy(data, out doubles); // ?
Run Code Online (Sandbox Code Playgroud)

如何将演示阵列复制到双精度数组中,而不必(...)通过每个元素?在C++中,我会使用memcpy,但在C#中我没有找到Marshal.Copy中我需要的东西.

void MethodIDoNotWantToUse(Demo[] demo, out double[] doubles)
{
    doubles = new double[demo.Length * 2];
    for(int i = 0, j = 0; i < demo.Length; ++i)
    {
        doubles[j++] = demo[i].X;
        doubles[j++] = demo[i].Y;
    }  
}

void MethodIWouldPreferToUse(Demo[] demo, out double[] doubles)
{
    doubles = new double[demo.Length * 2];
    memcopy(doubles, demo, demo.Length * 2 * sizeof(double));
}
Run Code Online (Sandbox Code Playgroud)

c# value-type memcpy

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

以编程方式删除克隆存储库的目录

我正在使用LibGit2Sharp将远程存储库克隆到 Windows 临时文件夹中。我的脚本完成后,我想清理一下。但是,我总是收到以下错误:

系统错误:拒绝访问路径“pack-efcef325f8dc897099271fd0f3db6cf4d9f12393.idx”。

pack-efcef325f8dc897099271fd0f3db6cf4d9f12393.idx文件在哪里$local_git_clone_path\objects\pack.

如何完全删除我使用 LibGit2Sharp 克隆的 git repo 的所有本地剩余物?

c# git libgit2sharp

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