小编Rya*_*lor的帖子

使用TortoiseSVN如何将更改从主干合并到分支,反之亦然?

我一直在阅读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执行这些操作.新对话框在主菜单上提供三个不同的选项.

  1. 合并一系列修订
  2. 重新整合分支
  3. 合并两棵不同的树

根据我的收集,TortoiseSVN总是使用以下语法执行svn.

svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH

此外,重新集成分支通常会失败并显示一条消息,指出某些目标尚未合并,因此无法继续,因此我不得不使用选项#3.

我的问题是:

  1. 如何使用TortoiseSVN 1.5将更改从主干合并到分支?
  2. 我是如何使用TortoiseSVN 1.5将分支合并到主干,有和没有reintegrate方法?
  3. 我应该为每个选项使用以上哪个选项,为什么?

编辑

通过"干运行"测试我发现命令行是Subversion操作

svn merge http://svn.myurl.com/proj/trunk

类似于TortoiseSVN中的选项#1(合并一系列修订版),只要我将修订范围留空.

svn tortoisesvn merge branch

130
推荐指数
3
解决办法
10万
查看次数

如何更正"提交失败.文件xxx已过期.找不到xxx路径."

关于在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)

我的工作箱是最新的.我甚至检查了一个新的文件夹到另一个文件夹,以确保没有任何本地混乱混乱合并.我已经对此做了一些研究,我认为部分问题是用户错误.我认为我们的问题是:

  1. 我们让一些开发人员在1.5之前和之后的一些事务中使用subversion客户端.我相信这有可能破坏合并信息.
  2. 在其他分支中,我们已经执行了部分合并.也就是说,我们并不总是在分支的根处执行合并.这是为了便于在同一分支内更新Flex和.NET工作.
  3. 我们在我们的分支上执行了循环(反身)合并.之所以这样做是因为我们有多个并行分支,我们希望定期使用trunk中的最新代码更新我们的分支.

Subversion的书籍/团队明确不推荐所有这些内容.我们已经吸取了教训,现在已经了解了最佳实践.但是,我们首先需要合并并提交最新的分支.

什么是纠正我们遇到的问题的最佳方法?

删除主干和分支中的所有合并信息是否可行? 不,我已经这样做但它没有解决我上面的错误.

svn merge commit

45
推荐指数
4
解决办法
10万
查看次数

是否可以将git-flow模型与Subversion一起使用?

我们使用Subversion,除了像我这样的一些人,在Subversion中几乎没有分支和合并的经验.我的Subversion经验仅限于简单的功能分支,其中合并和树冲突虽然不是很罕见,但并不是很难解决.

鉴于此,我正在帮助管理一个项目,其中我们当前对trunk方法的提交根本不可持续地满足我们的需求.我介绍了功能分支和合并到我的本地化团队,我们取得了一些成功.然而,简单的功能分支仍然无法回答我们的所有问题,例如:

  1. 我们如何为此版本和后续版本并行开发代码?
  2. 什么代码被认为是稳定的?
  3. 什么(开发中)代码将进入下一个版本?
  4. 什么(开发中)代码将进入后续版本?
  5. 我们的测试,验收或生产环境的代码版本是什么?
  6. 我们如何将并发开发活动与已知的稳定版本集成,以减少引入错误和不完整的工作?
  7. 我们如何为发布的代码提供热修复?
  8. 从源头控制中我们如何知道目前正在进行的开发活动?
  9. 我们如何在不中断当前代码库的情况下进行实验或研发而不会受到影响?

似乎 这里定义的git-flow将很长一段时间来回答很多这些问题.我在Mercurial中尝试了这个方法,似乎也可以在那里实现这个方法.可悲的是,此时迁移到DVCS已不在考虑范围之内.

但是,我在Subversion中模仿此方法的简短尝试因许多合并和树冲突而失败.合并选项和边缘案例众多且令人费解.

可以使用Subversion来实现git-flow,如果是,那么痛苦程度是多少?

svn trunk branching-and-merging git-flow

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

如何配置log4net以使log.IsDebugEnabled为true?

我试图在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以便我只能记录调试消息?

vb.net debugging configuration log4net

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

在IIS 7.5和Windows Server 2008 R2下为ASP.NET的联网UNC文件夹授予写入权限

BLUF

我们的应用程序正在尝试使用在.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)

permissions access-denied iis-7.5

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

如何使用log4net将RollingFileAppender配置为按日期和大小滚动?

我配置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&quot;.log&quot;"/>
        <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会导致记录器不写入任何文件.

xml configuration log4net composite rollingfileappender

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

将文件添加到git的阶段什么都不做,无法提交

我已经陷入了一个奇怪的境地,在我的一个分支机构中,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".

编辑1

输出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包含小写结尾.

编辑2

使用从文件系统中物理删除的文件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上,并且在我的路径上不能有两个文件,只有大小写不同.

git

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

Powershell Get-WebSite名称参数被忽略

我想使用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返回特定网站的信息?

powershell iis-7 windows-7

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

为什么无参数的Guid构造函数会生成一个空的GUID?

为什么无参数的Guid构造函数生成一个空的GUID而不是像Guid.NewGuid()一样默认生成的GUID?

空Guid有特殊用途吗?

.net c# guid default-constructor

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

从WiX中静默执行PowerShell脚本挂起PowerShell

注意:此问题也发布在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)

powershell windows-installer wix wix3.5

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