我一直在阅读Subversion 1.5的分支/合并,使用优秀的免费版本控制和Subversion一书.我想我了解如何使用Subversion命令行客户端来执行我最常需要的操作,它们是:
使用Trunk中的更改更新分支
从分支的工作目录运行:
svn merge http://svn.myurl.com/proj/trunk
将分支合并到主干
从trunk的工作目录运行:
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
但是,我们使用TortoiseSVN 1.5作为Subversion的接口.我想知道如何最好地使用TortoiseSVN执行这些操作.新对话框在主菜单上提供三个不同的选项.
根据我的收集,TortoiseSVN总是使用以下语法执行svn.
svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH
此外,重新集成分支通常会失败并显示一条消息,指出某些目标尚未合并,因此无法继续,因此我不得不使用选项#3.
我的问题是:
编辑
通过"干运行"测试我发现命令行是Subversion操作
svn merge http://svn.myurl.com/proj/trunk
类似于TortoiseSVN中的选项#1(合并一系列修订版),只要我将修订范围留空.
关于在subversion中提交合并的结果,我最近遇到了一个特别棘手的问题.我们的Subversion服务器是@ 1.5.0,我的TortoiseSVN客户端现在是@ 1.6.1.
我正在尝试将功能分支合并到我的主干中.合并似乎工作正常; 但是,提交失败,并显示以下错误消息.
Commit failed (details follow):
File
'flex/src/com/penbay/invision/portal/services/http/soap/ReportServices/GetAllBldgsParamsByRegionBySiteResultEvent.as'
is out of date
'/svn/ibis/!svn/wrk/531d459d-80fa-ea46-bfb4-940d79ee6d2e/visualization/trunk/source/flex/src/com/penbay/invision/portal/services/http/soap/ReportServices/GetAllBldgsParamsByRegionBySiteResultEvent.as'
path not found
You have to update your working copy first.
Run Code Online (Sandbox Code Playgroud)
我的工作箱是最新的.我甚至检查了一个新的文件夹到另一个文件夹,以确保没有任何本地混乱混乱合并.我已经对此做了一些研究,我认为部分问题是用户错误.我认为我们的问题是:
Subversion的书籍/团队明确不推荐所有这些内容.我们已经吸取了教训,现在已经了解了最佳实践.但是,我们首先需要合并并提交最新的分支.
什么是纠正我们遇到的问题的最佳方法?
删除主干和分支中的所有合并信息是否可行? 不,我已经这样做但它没有解决我上面的错误.
我们使用Subversion,除了像我这样的一些人,在Subversion中几乎没有分支和合并的经验.我的Subversion经验仅限于简单的功能分支,其中合并和树冲突虽然不是很罕见,但并不是很难解决.
鉴于此,我正在帮助管理一个项目,其中我们当前对trunk方法的提交根本不可持续地满足我们的需求.我介绍了功能分支和合并到我的本地化团队,我们取得了一些成功.然而,简单的功能分支仍然无法回答我们的所有问题,例如:
似乎 这里定义的git-flow将很长一段时间来回答很多这些问题.我在Mercurial中尝试了这个方法,似乎也可以在那里实现这个方法.可悲的是,此时迁移到DVCS已不在考虑范围之内.
但是,我在Subversion中模仿此方法的简短尝试因许多合并和树冲突而失败.合并选项和边缘案例众多且令人费解.
可以使用Subversion来实现git-flow,如果是,那么痛苦程度是多少?
我试图在Visual Studio 2005的ASP.NET应用程序中使用log4net.我已经声明了一个logger实例,如下所示:
Private Shared ReadOnly log As ILog = LogManager.GetLogger("")
Run Code Online (Sandbox Code Playgroud)
我试图以下列方式使用它:
If log.IsDebugEnabled Then
log.Debug("Integration Services Constructed")
End If
Run Code Online (Sandbox Code Playgroud)
这是我的配置:
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="..\\logs\\logfile.log"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1MB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
不幸的是,log.IsDebugEnabled总是假的.
如何配置log4net以便我只能记录调试消息?
我们的应用程序正在尝试使用在.NET 4.5,IIS 7.5和Windows Server 2008 R2下运行的ASP.NET Web服务将文件写入UNC文件夹.但是,任何将文件写入所需位置的尝试都会导致访问被拒绝的异常.
这项任务似乎很简单但是我和我的团队已经对此进行了一段时间的故障排除,我们对可能导致错误的原因感到困惑.以下是我们的设置细节以及到目前为止我们尝试过的内容.名称已被更改以保护无辜者.
Web服务器,MyWebServer的,有一个名为网站My.Site.Com名为相应的应用程序池My.Site.Com.应用程序池的配置如下所示.
.NET Framework Version : v4.0
Enable 32-bit Applications : False
Managed Pipeline Mode : Integrated
Name : My.Site.Com
Identity : ApplicationPoolIdentity
Load User Profile : False
Run Code Online (Sandbox Code Playgroud)
我们正在试图写入的UNC路径\ myotherserver\mydirectories \输出,其中mydirectories是实际份额.在此共享上,名为mygroup-www的域组已被授予对共享和所有子文件夹的完全权限.机器帐户(即mywebserver)是此mygroup-www组的成员.
注意:目前,这个UNC路径实际上位于同一台机器mywebserver上.但是,在我们的测试环境中以及生产环境中,当它准备就绪时,最终会将其移动到mywebserver以外的机器上.目前,我只有一个测试环境来进行故障排除.
可以通过执行以下代码来复制错误.
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public string ExportReport(int reportId)
{
try
{
string output = ConfigHelper.OutputPath + "test.html"; // UNC path
string url = …Run Code Online (Sandbox Code Playgroud) 我配置log4net以使用复合RollingFileAppender,以便当前文件始终命名为logfile.log,所有后续文件都命名为logfile-YYYY.MM.dd.seq.log,其中seq是序列号,如果日志超过特定大小在一天之内.不幸的是,我在配置这样的设置方面收效甚微.
编辑:
我当前的配置粘贴在下面.它已根据几个答案进行了更新,使我足够接近我的需求.这将生成以下格式的文件:logfile_YYYY.MM.dd.log.seq
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\\logfile"/>
<staticLogFileName value="false"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="_yyyy.MM.dd".log""/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="75KB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
一个有趣的说明,设置
<staticLogFileName value="false"/>
Run Code Online (Sandbox Code Playgroud)
为true会导致记录器不写入任何文件.
我已经陷入了一个奇怪的境地,在我的一个分支机构中,web.config文件无法添加到舞台上.的输出
git add path/to/web.config
git status
Run Code Online (Sandbox Code Playgroud)
与添加文件前相同.Web.config似乎需要修改,并且尚未添加到舞台中.
也许更有趣的是,当我从文件系统中删除Web.config并运行时,git status我得到的输出表明我有两个web.config文件已准备好被删除而且没有暂存.
# Changes not staged for commit:
# deleted: path/to/Web.config
# deleted: path/to/web.config
Run Code Online (Sandbox Code Playgroud)
注意,一个具有大写字母W而另一个具有小写字母w.我在实际文件系统上删除的文件是大写的"W".
输出git ls-files --stage显示确实有两个文件在索引中按大小写不同.
100644 63cd5911b9b12bbad559bb69b1b596708b932061 0 path/to/Web.config
100644 d60ab44bb38f05ffce126ddd3c3293b06e6e4096 0 path/to/web.config
Run Code Online (Sandbox Code Playgroud)
我将每个文件输出到一个文件,git cat-file -p <hash> > <file>并比较两个文件.虽然文本内容相同,但大写的Web.config包含CRLF结尾,而小写的web.config包含小写结尾.
使用从文件系统中物理删除的文件git reset HEAD会生成此输出,但文件系统上的文件未恢复,因此无法添加.
Unstaged changes after reset
D path/to/Web.config
D path/to/web.config
Run Code Online (Sandbox Code Playgroud)
我希望工作目录中的文件具有CRLF,因为我在Windows上工作,但我希望将文本文件与LF一起存储在内部Git数据库中.所以,我认为这将是63cd591,但我可能会离开这里.
如何在此方案中从索引中永久删除path/to/web.config?我在Windows上,并且在我的路径上不能有两个文件,只有大小写不同.
我想使用PowerShell Get-Website cmdlet检索有关特定IIS 7网站的信息.不幸的是,无论我传入的-Name参数如何,Get-Website都会返回所有网站的信息.似乎忽略了-Name参数.
例如,如果我使用:
Import-Module WebAdministration
Get-Website -Name "Test Website"
Run Code Online (Sandbox Code Playgroud)
我将收到我机器上所有网站的信息:
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
Default Web Site 1 Started %SystemDrive%\inetpub\wwwroot http *:80:
net.tcp 808:*
net.pipe *
net.msmq localhost
msmq.formatname localhost
Test Website 2 Started C:\websites\test http *:80:test.mydomain.com
Run Code Online (Sandbox Code Playgroud)
根据文档,Get-Website应返回-Name参数中指定的网站的信息.我必须误解文档或滥用cmdlet,或两者兼而有之.
我应该如何使用Get-Website返回特定网站的信息?
为什么无参数的Guid构造函数生成一个空的GUID而不是像Guid.NewGuid()一样默认生成的GUID?
空Guid有特殊用途吗?
注意:此问题也发布在WiX用户邮件列表中.
我试图从WiX生成的MSI静默执行PowerShell脚本.但是,无论何时我运行安装程序,PowerShell都会挂起.有趣的是,根据安装程序日志,PowerShell脚本似乎成功运行.此外,如果我通过任务管理器终止PowerShell进程,安装程序将取消安装并回滚所有更改.
PowerShell脚本内容
# @param website The website under which the module should be compiled and registered.
# @param name The name of the module to be registered.
# @param assembly The assembly name, version, culture and public key token to be compiled.
# @param assemblyType The fully qualified assemebly type to be registered.
param([string]$website = "website", [string]$name = "name", [string]$assembly = "assembly", [string]$assemblyType= "assemblyType")
import-module webadministration
add-webconfiguration /system.web/compilation/assemblies "IIS:\sites\$website" -Value @{assembly="$assembly"}
new-webmanagedmodule -Name "$name" -Type "$assemblyType" -PSPath …Run Code Online (Sandbox Code Playgroud)