首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grails脚手架和tfs文件锁定

grails脚手架和tfs文件锁定
EN

Stack Overflow用户
提问于 2014-07-01 22:36:40
回答 2查看 166关注 0票数 0

在将Grails工件签入(TFS)之后,所有手工艺品都会被锁定,而进一步的脚手架也会失败,例如运行generate-所有这些都是针对以前为其检入的某个域运行的。这真的很痛苦。到目前为止,我们一直在检查整个项目,然后再做更多的工作,但这会导致其他问题。有什么办法能更好地处理这件事吗?我是TFS的新手。

--编辑#1 --

当我谈到锁定时,我指的是被写入保护的本地文件。

--编辑#2 --

我想我可以使用git或git(不确定哪个更好),可能是svnbridge,但我希望为我的团队提供一个更简单的解决方案。大多数只使用TFS,引入新版本控制系统的需求可能会破坏整个Grails项目。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-07 09:47:44

可以将预构建事件添加到受影响的项目中。右键单击项目并在build选项卡下选择属性,您可以输入命令行代码对受影响的文件进行签出。根据为解决方案设置配置的方式,您可能更好地卸载项目,然后直接键入.csproj文件,以便为所有配置启动预构建事件。

只有您的脚手架文件应该是目标文件,这样当您获得最新版本并执行构建时,您的脚手架文件将被签出,当您在签出的文件中进行检查时,将对签出文件进行比较,如果没有对脚手架做任何修改,那么签入将被忽略,因为没有任何更改。

在您的解决方案中,用grails脚手架标识项目。

如果您右键单击项目并选择属性,则转到Build Events选项卡。

您可以在这里输入脚本进行预构建或后期构建,但是直接在项目xml中输入可以提供更多的灵活性。

卸载项目,以便直接编辑项目xml。

然后再次右击并选择“编辑Project.CSProj”

向下滚动到Project文件xml的底部,您将在这里找到构建前和构建后的部分。条件语句应该设置为满足您的需要,这里我假设版本只用于构建,所以只有在配置不等于发布的情况下才会触发代码。

取消对预构建部分的注释,并在编译代码之前添加要激发的代码。这只是一个例子,您可能需要扩展到文件的路径,具体取决于项目的结构。

代码语言:javascript
复制
      <!--To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.--> 
  <!--Target for prebuild event when the configuration is not Release-->
  <Target Name="BeforeBuild" Condition=" '$(Configuration)' != 'Release' " >
    <!--Recursively check out everything in the sub folder-->
    c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\tf.exe checkout Scaffolding /recursive
    <!--Check out a list of individual files-->
    c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\tf.exe checkout Scaffoldingfile1.cs Scaffoldingfile2.cs
  </Target>

然后,您可以关闭Project文件并在visual studio中重新加载。

您的流程现在应该是

  • 从源代码管理获取最新代码
  • 重建解决方案
  • 您的脚手架代码应该自动签出。
  • 对解决方案进行任何更改
  • 执行签入

在签入时,如果您的脚手架文件已经更新,它们应该被签入,如果没有发生任何更改,TFS应该忽略这些文件并撤消签出。

票数 1
EN

Stack Overflow用户

发布于 2014-07-01 23:39:16

如果使用的是TFS 2012或更高版本,则可以使用所谓的本地工作区(而不是服务器工作区)。这将阻止TFS使您的文件只读。

它应该是TFS 2012+中的默认工作区类型,但是您可以通过单击源代码管理资源管理器中的工作区下拉列表,选择工作区.然后编辑您的工作区,单击“高级”,并检查您的工作区类型是否设置为“本地”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24520257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档