标签: svn-externals

颠覆外部是反模式吗?

Subversion允许您使用外部嵌入其他存储库的工作副本,从而允许在项目中轻松控制第三方库软件.

虽然这些似乎是重用库和供应商软件版本控制的理想选择,但它们并非没有批评:

请不要使用Subversion外部(或其他工具中的类似),它们是反模式,因此是不必要的

使用外部设备是否存在隐患?请解释为什么他们会被视为反模式.

svn version-control anti-patterns svn-externals

68
推荐指数
6
解决办法
2万
查看次数

我可以使用mercurial模拟svn:externals吗?

我们正在考虑从SVN迁移到Mercurial,并遇到了绊脚石.

我们目前使用svn:externals自动将一组通用库拉入工作目录.我在Mercurial找不到这样的支持.

有没有办法用Mercurial自动执行此操作,还是我需要在构建过程中伪造它?

svn mercurial externals svn-externals

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

我们可以在Subversion中将单个文件设置为外部文件吗?

我们可以在Subversion中将单个文件设置为外部文件吗?

svn file svn-externals

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

git&svn externals - 最终解决方案了吗?

这是我目前用于我的svn项目的工作流程(我从不使用svn分支,有些项目也被其他人积极处理):

  • 在服务器上,执行git svn fetch可能需要数小时的初始值.还要创建一个"构建"分支.
  • 在开发机器上克隆现在很快:git clone srv://project.git, git checkout build然后git update-refs ..., git svn fetch恢复到svn存储库的链接
  • 工作,提交,工作提交,......
  • 检查事情是否正常,git push build服务器并在Hudson中为该分支触发构建
  • 存储工作,以便我可以从另一台机器上工作,也推动构建分支
  • 当满意时,以逻辑步骤(例如每个bug一个)加入提交,提交svn并重置所有内容 git checkout master, git merge build, git svn dcommit, git push, git checkout build, git rebase master, git push build

输入svn externals.我已经在这里尝试了每个脚本,但所有脚本都失败了.我的外部设置如下:

/path/to/x x
/path/to/y/z y/z
/path/to/a/b.file a/b.file
Run Code Online (Sandbox Code Playgroud)

并且脚本执行诸如尝试/path/to/x在文件系统的根目录中创建的内容git svn fetch /path/to/x.单个文件似乎也会导致更多问题.(子问题1:这些脚本的svn:externals格式是为什么编写的?)

它似乎很难修改其中一个脚本来处理我的情况并复制我正确的目录结构,但后来我遇到了一个主要问题:如果我更改了x和y/z中的文件目录,我没有看到将其加入单个svn提交的方法,这是我开始首先使用git的原因之一.

因此,问题是:有没有办法可以复制上述工作流程,只使用某个svn存储库的某些部分,这样我就能在root中执行svn dcommit?我更喜欢一个可以在linux和windows上运行的现成解决方案.

编辑我很快就通过我找到的一个脚本入侵了它,并使它复制了svn externals的目录结构.我不能克隆单个文件,这里是输出:

git svn clone -r HEAD …
Run Code Online (Sandbox Code Playgroud)

svn git workflow svn-externals

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

如何让TortoiseSVN永远冻结标签的svn:externals

这对tortoiseSVN有可能吗?:

始终冻结svn:externals标签

方案是我们的主干将始终使用'HEAD'修订版的外部,但是当我们创建'标签'时,我们希望他们有一个外部版本设置,以便在特定时间点正确"冻结"它们.

更新

感谢大家的反馈/信息.

因为我无法找到任何东西,将完全满足我们的需求(尝试smartsvnsvncopy.pl)我做了,到目前为止已经通过了所有我们的测试情况下,一个控制台应用程序.

高级概述:应用程序获取存储库URL然后查找所有外部因素并为它们添加最后一次提交修订 - 我执行svn info并获取"提交修订".

该应用程序适用于文件夹和单个文件外部.

以下是源代码和完整的安装文件:http: //svnxf.codeplex.com/

svn tortoisesvn svn-externals

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

SVN中无法修复的混合修订工作副本

我有一个干净的分支结账(没有修改),但是我无法将主干重新集成到我的分支中,因为SVN认为我有一个混合版本的工作副本:

c:\myproject> svnversion
2045:2047
Run Code Online (Sandbox Code Playgroud)

问题似乎是由我的一个外部因素造成的:

c:\myproject> svn propget svn:externals tools
-r1448 ^/tools/external/trunk/gandalf/bin gandalf/bin
-r1508 ^/tools/external/trunk/gandalf/include gandalf/include
-r1508 ^/tools/external/trunk/gandalf/lib gandalf/lib
-r1428 ^/tools/external/trunk/jsdb jsdb
-r2045 ^/tools/external/trunk/java/lib/jing.jar jing.jar
Run Code Online (Sandbox Code Playgroud)

您会注意到它们都是目录外部而不是单文件外部,除了jing.jar,这与"svnversion"认为是我工作副本的最低范围的版本相同,这应该是干净的结帐r2047.

我该如何解决这个问题(除了不使用单文件外部)?

我已经尝试过更新,新的签出和svn清理,它仍然有这个问题.我正在使用TortoiseSVN 1.6.12

svn merge svn-externals

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

SVN externals repo"已经锁定"更新

基本上我必须在同一台服务器上回购:

svn://repo/foo
-> checked out to d:\foo

svn://repo/bar
-> d:\foo has an svn:external property set to check this out into d:\foo\bar
Run Code Online (Sandbox Code Playgroud)

当"svn:update"或新的"svn:checkout"时,这是错误的要点:

Command - Update
Updated - D:\foo
External - D:\foo\bar
External failed - D:\foo\bar
Error - d:\foo\bar is already locked via d:\foo
Run Code Online (Sandbox Code Playgroud)

在我"清理"或手动释放锁定后,问题仍然存在.

任何见解将不胜感激.谢谢!

更新:

阿提拉在评论中钉了它.我在存储库中存在"foo/bar".

供将来参考 - 当使用SVN:外部属性时,SVN 将为外部参考创建目标文件夹.

svn tortoisesvn svn-externals

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

一个真正的,强大的,git svn外部解决方案?

当你签出一个包含svn externals的git存储库时,它会忽略它们.人们所做的是创建许多脚本,其中许多脚本在这个问题中提到我如何使用git-svn保持svn:external是最新的?.问题是虽然许多脚本都浮在互联网上,但我还没有找到一个实际上很强大的脚本.通过健壮,我的意思是:

  1. 它可以处理与特定版本挂钩的svn外部
  2. 它可以处理指向文件而不是目录的svn外部

因为这些是我的存储库的2个问题,似乎会​​导致大多数脚本失效.我没兴趣使用smartgit.

有这样的剧本吗?有没有人有一个"几乎存在"的脚本可以很快适应这两件事?

git git-svn svn-externals

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

所有项目中的共享组件,是否有比svn:externals更好的替代方案?

我的情况:我有几个组件,有时会对它们进行更改,并在很多不同的项目中共享.每个项目都将这些文件放在名为/ depends的子文件夹中.依赖包含所有常见组件的一堆svn外部.

svn:externals给我带来了很多时间和痛苦.

  • 显示项目根文件夹上的日志不会显示svn:external文件夹的更改(但有趣的提交和更新将适用于svn:externals)
  • 分支时,svn:externals不分支.
  • 由于svn:externals上没有分支,任何更改通常都会破坏主干.
  • 标签不会冻结他们的外部.这实际上违背了标记的目的.

请记住,我有几个项目(让我们说这个讨论每个使用相同的外部代码10),因此为每个项目保留正常的已提交目录将花费我很多合并时间.

对我的情况有更好的选择吗?

svn svn-externals

14
推荐指数
3
解决办法
2831
查看次数

SVN是否在其属性中支持某种注释?

我想在我的项目中使用SVN外部包含许多第三方插件.我发现这篇博客文章建议将svn:externals值保存在一个带有目标/源对的文件(名为svn.externals)中,如下所示:

akismet http://svn.wp-plugins.org/akismet/trunk
all-in-one-seo-pack http://svn.wp-plugins.org/all-in-one-seo-pack/trunk
Run Code Online (Sandbox Code Playgroud)

并使用该-F标志来设置属性,如下所示:

svn propset svn:externals -F svn.externals
Run Code Online (Sandbox Code Playgroud)

我从啤酒星球上得到了上述信息.

现在来问问题.SVN是否支持评论格式,允许我评论此svn.externals文件?我想将外部存储库分组libraries, widgets等等.另外,我正在考虑添加有关如何为文件顶部的开发人员更新此文件/属性的说明.例如,假设#开始评论:

# README: When updating svn:externals
#  1. Update and save this file
#  2. Run 'svn propset svn:externals -F svn.externals
#  3. Commit 'svn ci -m "plugin XXXXXXXX added to svn:externals"'

# wp plugins
wp/content/plugins/akismet http://svn.wp-plugins.org/akismet/trunk
wp/content/plugins/all-in-one-seo-pack http://svn.wp-plugins.org/all-in-one-seo-pack/trunk

# jquery + plugins
js/jquery http://jquery-ui.googlecode.com/svn/trunk
# etc etc (this is just a random example of my idea)
Run Code Online (Sandbox Code Playgroud)

- …

svn svn-externals

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