我有一个工作副本存储库,我一直在工作没有问题; 此存储库的原点位于GitHub上.
我想让我的工作副本存储库可用作我的构建机器(另一个物理主机上的VM)的原点,因此我可以在构建机器上构建和测试我对工作副本的提交,而无需通过首先是GitHub.我已经有了GitHub存储库的构建,但我希望这是一个"黄金"存储库/构建; 即,如果有东西进入那里,应该保证对GitHub的构建通过.
我查看了有关Git URL的文档,并看到可以选择在表单中使用URL git://host.xz[:port]/path/to/repo.git/(例如,参见git-clone文档).我希望以最简单的方式执行此操作,只需最少的配置:我不希望设置SSH守护程序或Web服务器只是为了将其发布到我的构建计算机.
我正在运行Windows 7 x64 RC,我安装了MSysGit和TortoiseGit,并且我在防火墙上打开了Git的默认端口(9814).请假设工作副本仓库位于D:\Visual Studio Projects\MyGitRepo,主机名为devbox.构建计算机是Windows Server 2008 x64.我一直在构建机器上尝试以下命令,并带有相关的输出:
D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我知道这反对了枚举的想法,但是有可能在C#/ Java中扩展枚举吗?我的意思是"扩展",无论是为枚举添加新值,还是从现有枚举继承的OO意义.
我认为它在Java中是不可能的,因为它最近才得到它们(Java 5?).C#似乎对想要做疯狂事情的人更宽容,所以我认为这可能是某种方式.据推测它可以通过反射来破解(不是你每次都使用那种方法)?
我不一定对实现任何给定的方法感兴趣,它只是在我遇到它时激起了我的好奇心:-)
我最近开始在个人项目上进入Git,我可以看到DVCS如何让我们在工作中受益(这是一家大型企业软件公司,目前正在运行Perforce).我的团队中的功能工作主要包括开发人员创建自己的分支; 有时这些是由小型开发团队共享的.我认为在这种情况下使用DVCS会更有效率.
然而,在更一般的情况下,我有兴趣听到在工作中使用DVCS的人,大中型团队.
我今天遇到了这种情况.我有一个我正在测试平等的对象; Create()方法返回MyObject的子类实现.
MyObject a = MyObject.Create();
MyObject b = MyObject.Create();
a == b; // is false
a.Equals(b); // is true
Run Code Online (Sandbox Code Playgroud)
注意我还在子类实现中覆盖了Equals(),它执行了一个非常基本的检查,以查看传入的对象是否为null并且是子类的类型.如果满足这两个条件,则认为对象是相等的.
另一个有点奇怪的是我的单元测试套件做了一些类似的测试
Assert.AreEqual(MyObject.Create(), MyObject.Create()); // Green bar
Run Code Online (Sandbox Code Playgroud)
并观察到预期的结果.因此,我猜NUnit使用了封面下的a.Equals(b),而不是我假设的== b.
旁注:我使用.NET和Java混合编程,所以我可能会在这里混淆我的期望/假设.但是,我认为a == b在.NET中的工作比在Java中更一致,在Java中你经常需要使用equals()来测试相等性.
更新 以下是Equals()的实现,如下所示:
public override bool Equals(object obj) {
return obj != null && obj is MyObjectSubclass;
}
Run Code Online (Sandbox Code Playgroud) 我在多线程环境中有一个对象来维护一组信息,例如:
public IList<string> Data
{
get
{
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
我目前return data;用a包裹ReaderWriterLockSlim来保护集合免于共享违规.但是,为了更加确定,我想将集合作为只读方式返回,这样调用代码就无法对集合进行更改,只能查看已经存在的集合.这是可能吗?
在我的PowerShell脚本中,我在许多文件上运行Select-String,查找通过变量($ id)传递给它的字符串:
foreach ($file in (ls "path\to\files")) {
$found = $false
$found = Select-String -Path $file $id -Quiet
if ($found) {
break
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,$ id变量有时会像"\ C"或"\ T"这样,Select-String会尝试将其解释为转义序列.这些不是有效的转义序列,因此Select-String会引发错误.它们不是转义序列(例如,它可能是文件路径的一部分,例如"C:\ Test"),那么如何防止PowerShell/Select-String将它们解释为?我试过在$ id周围使用括号而没有运气.
随着.NET 4.0 beta的推出,以及.NET动态语言运行时的广泛可用性,我猜这些主题将变得"更热".
我对DLR和PowerShell之间的概念差异感到困惑.在我看来,如果我想在我的.NET应用程序中提供脚本功能,我可以使用DLR(以及在IronPython或IronRuby中启用脚本,或者可用于DLR的任何其他Iron*语言),或者托管PowerShell运行空间.
每种方法的优缺点是什么?为什么我可以选择一个而不是另一个?作为一种动态语言本身,以及一流的.NET语言,PowerShell为何也不针对DLR?
我有一个ASP.NET MVC Web应用程序,它实现了自定义成员资格提供程序.自定义成员资格提供程序使用UserRepository其构造函数,该构造函数提供成员资格提供程序和NHibernate之间的接口.它UserRepository由Ninject IoC容器提供.
但是,显然,当.NET实例化提供程序时,这不起作用:无参数构造函数没有UserRepository而无法创建一个(UserRepository需要将NHibernate会话传递给它的构造函数),这意味着提供者无法访问其数据存储.如何解决对象依赖?
值得注意的是,这是一个已经使用Ninject进行改造的现有应用程序.以前我使用无参数构造函数,它们能够与参数化构造函数一起创建所需的依赖项,以帮助进行单元测试.
有什么想法,还是我把自己建在一个角落里?
我一直在努力试探最近的.NET Reactive Extensions,但是已经触及了一些概念墙:我无法弄清楚为什么IObservable.First()会阻塞.
我有一些示例代码看起来像这样:
var a = new ListItem(a);
var b = new ListItem(b);
var c = new ListItem(c);
var d = new ListItem(d);
var observableList = new List<ListItem> { a,b,c,d }.ToObservable();
var itemA = observableList.First();
// Never reached
Assert.AreEqual(expectedFoo, itemA.Foo);
Run Code Online (Sandbox Code Playgroud)
我期待发生的事情是itemA在引用上等于a并且能够访问其成员等.相反,发生的是First()块和Assert.AreEqual()从未到达的块.
现在,我知道在使用Rx时,代码应该Subscribe()是IObservables,所以很可能我在这里做错了.但是,根据各种方法签名,不可能执行以下任一操作:
observableList.First().Subscribe(item => Assert.AreEqual(expectedFoo, item));
Run Code Online (Sandbox Code Playgroud)
要么
observableList.Subscribe(SomeMethod).First() // This doesn't even make sense, right?
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
.net ×4
c# ×4
git ×2
powershell ×2
.net-3.5 ×1
asp.net ×1
asp.net-mvc ×1
collections ×1
concurrency ×1
dvcs ×1
escaping ×1
git-pull ×1
java ×1
mercurial ×1
ninject ×1
ninject-2 ×1
pull ×1
regex ×1
scripting ×1
wix ×1
wix3 ×1
working-copy ×1