我们正在使用SVN测试水域,Beanstalk作为主机.我们的设置看起来像这样:
存储库:模块
存储库:网站1
存储库:网站2
Beanstalk具有内置的FTP部署工具.在我的理想世界中,Beanstalk只会看到外部引用并将部署的任何更改与网站更改一起部署,但这不受支持,也不会很快.
以包含对外部模块更改的方式自动部署网站1和2的良好做法是什么?
其他SVN主机是否更好地支持部署外部设备?
如果可能的话,我想避免添加我们自己的构建/部署服务器.
svn deployment svn-externals amazon-elastic-beanstalk beanstalk-svn
我们将svn:externals用于库的特定修订版,例如
xyzlib -r12345 https://asdf.asdf.local/xyzlib/trunk/
Run Code Online (Sandbox Code Playgroud)
当您在工作副本中对这样的已检出外部进行修改时,即使外部链接指向特定修订而不是HEAD,也可以提交.
在svn update提交后运行时,更改将在工作副本中消失,因为subversion会将所有内容还原为修订版12345.因此,您自己从未真正看到更改,但它们仍然在HEAD中,这很糟糕.
是否可以仅在外部未指向HEAD修订版时禁止提交?
在我们公司,我们正在开发一个由不同C/C++模块组成的产品.理想情况下,每个层和模块应由不同的团队分别开发并独立测试.目前,我们将每个模块分成它自己的分支:
这些模块是:
\hid \branches \tags \trunk \api \branches \tags \trunk \ui \branches \tags \trunk
另外,产品发布是通过组合模块构建的,并使用CI系统定期编译.
\productX
\branches
\5.0
\hid-4.0 (svn:externs \hid\branches\4.0)
\api-3.0 (svn:externs \api\branches\3.0)
\ui-5.0 (svn:externs \ui\branches\5.0)
\tags
\trunk
我们遇到的主要问题是'svn tag'与externs相关的行为.当前的外部引用了HEAD - 因为我们希望定期构建最新版本以确保所有模块协同工作.但是,一旦构建成功并且我们继续进行发布,如果有一种简单的方法可以自动标记所有内容 - 包括extern中使用的版本,那将是很好的.就目前而言,我们必须为模块创建标签,然后将externs更新为这些标签,然后标记产品,最后将其交换回主干.
有更清洁的方法吗?随意评论当前的结构.
我们在本地使用Subversion,我们正在开发一个使用Fluent NHibernate的分支的项目,它在Github上托管.
我想它设置,以便单个svn checkout将检索构建项目所需的一切,但保持从github获取HEAD更新的能力.
有什么方法可以从Git存储库中提取代码,好像它是一个svn:external依赖项?我可以将.git文件夹检查到我们的Subversion存储库中,并在需要时运行git fetch,然后svn提交结果吗?
我有一个svn存储库,我曾经用svn + ssh协议签出.它有一些EXTERNALS,用svn + ssh URL引用自己.
我离开这个项目一段时间直到今天.当我尝试访问svn + ssh url(几个月前曾经工作过)时,我收到了消息svn: No repository found in 'svn+ssh://my-correct.hostname.com/the/right/path/to/the/repository.我仔细检查过,路径和主机名都是正确的.
我尝试使用file://URL 在托管repo的计算机上检查它,并且它成功,直到它必须签出EXTERNALS,其中No repository消息失败.我在本地和远程使用相同的用户.
我应该在哪里查找日志/调试信息来解决此问题?
此问题与使用Mercurial hgsubversion扩展与SVN外部相关.但是,有关做a的问题的第二部分hg svn update尚未得到答复.
是否有可能将您提取的subversion存储库中的SVN外部转换为Mercurial子存储库?
有没有办法更新工作副本以排除TortoiseSVN的外部?
我有一份工作副本,我用外部检查.我正在对包含路径进行一些更新,现在将这些外部文件放在不同的项目中.我想更新我当前的工作副本以排除外部 - 基本上从我的本地副本中删除外部.
由于我的工作副本发生了大量变化,只需删除并重新检查,省略外部,不是一个有效的选择.
我正在使用Tortoise SVN 1.7.2,使用1.7.x格式.
编辑:好的,看起来我正在寻找的是不可能的.似乎'SVN Update'将始终使用外部更新,即使使用'Omit Externals'(--ignore-externals)检出存储库也是如此.
编辑2:好的,找到了解决方案.似乎不是每个存储库标记它的方法.但全球:'TortoiseSVN'=>'设置'=>'高级'将'IncludeExternals'设置为false.这将阻止'SVN Update'更新外部.看起来强制进行外部更新,我需要转到"更新到修订版本..."这是可行的,因为这种情况不太可能发生.(我有5个结账,只有1个需要外部,并且只有当道具更新.2在结账时只需要一次)
是否可以忽略SVN中的外部提交?
例:
我有一个项目,其中一个子文件夹是外部的:
svn:externals
my_remote_folder http://svn.whatever.org/blah/trunk/
Run Code Online (Sandbox Code Playgroud)
这无缝地工作.总是当我执行更新时,外部也会更新.
但是,当我在本地结帐中更改任何内容时,我的IDE会识别更改并向我提供要提交的文件.但也许我只是对外部SVN的读访问权限.
我试图忽略常规文件夹:
svn:ignore
my_remote_folder
Run Code Online (Sandbox Code Playgroud)
我也试过了
my_remote_folder .
Run Code Online (Sandbox Code Playgroud)
但是我的IDE(PhpStorm)和TortoiseSVN仍然忽略了这个忽略.
我在Subversion中有一个项目设置,其中定义了一些Subversion Externals。这些Subversion Externals引用了其他项目。
Subversion布局示例:
结帐布局示例:
TeamCity允许您将AssemblyInfo Patcher生成功能附加到生成配置,但似乎不允许排除外部对象。由于外部对象是独立的项目,因此我想保留其程序集版本或AssemblyInfo用不同的模式对其进行修补。
目前,由于我的构建配置签出了具有Subversion Externals全面支持的Project1,然后应用AssemblyInfo Patcher,所以我的Project1程序集和我的Project2程序集都具有相同的程序集版本-即使我希望它们不同。
有没有一种方法可以使Project1程序集的版本与Project2程序集的版本不同?
如果我没有碰到这个页面,我就不会知道svn:externals .所以,我设置了我的工作文件夹.然后
mkdir lib/vendor
svn add --parents lib/vendor
svn ps svn:externals 'symfony http://svn.symfony-project.com/branches/1.4/' lib/vendor/
svn ci -m "add externals"
svn update
Run Code Online (Sandbox Code Playgroud)
"svn update"列出了整个symfony文件夹并且非常慢.我以为这会是一次性的痛苦.但是,每次输入"svn up"时,SVN都会检查外部存储库.我必须使用--ignore-externals来使"svn update"足够快.
我想知道svn:externals有什么好处,如果它太慢了.我宁愿将symfony复制到我自己的存储库,这肯定是一个更快的解决方案.
svn-externals ×10
svn ×8
deployment ×1
externals ×1
git ×1
git-svn ×1
github ×1
hgsubversion ×1
mercurial ×1
permissions ×1
ssh ×1
svnignore ×1
tags ×1
teamcity ×1
tortoisesvn ×1