我正在使用 svn+ssh,我看到了一些:
Killed by signal 15.
在svn up.
有什么想法吗?
我们已将大量源代码迁移到 git,并对我们当前的解决方案感到非常满意。我们希望在同一系统上对我们的服务器配置文件进行版本控制,但有一些事情无法按照我们希望的方式工作,我希望有人可以在这里分享他的经验。
这个问题类似于对服务器配置文件使用修订控制?,但我们有一些特殊要求,不适用于有关该问题的建议。
当前设置对配置文件使用 subversion。相应的存储库看起来像这样
/ # 仓库根目录 +--www.domain.com/ # www 的配置 | \ - 等等/ | \--apache2/ +--dev.domain.com/ # dev 的配置 | +--等/ | \ - 选择/ | \--app1/ | \--conf/ # 在 dev 上配置 app1 \--staging.domain.com/ # 暂存配置
使用 subversion 这将工作得很好,因为可以只检出存储库的子目录。此外,您可以使用 svn:externals 来指向几种不同配置设置的一种通用结构。我们只需要处理所有版本化目录中的.svn文件。另一方面, Git没有 svn:externals并且稀疏检出总是要求从根到实际目录的路径相同。
在讨论迁移到 git 时,我尝试写下服务器配置版本控制的主要要求:
有没有一种很好的方法可以将所有配置都放在一个存储库中并且只有一个子路径作为工作副本?目前我正在考虑两种方法,但想先在这里问这个问题
在单台机器上使用 …
目前,我们正在使用 Visual SVN,并且我们正在为 Visual svn 备份整个存储库目录。这会备份我们 svn 引擎中每个存储库的全部数据。我很好奇我是否能够在紧急情况或灾难情况下恢复这些文件?你们有没有人有过这种恢复过程的经验?谢谢。
所以我偶然发现了svn color并认为它是我们所有开发人员都会喜欢的有用的东西。read me for this 说将一些代码放入您的~/.bash_profile. 是否有一些全局.bash_profile我可以添加这个?也许另一种方式?
目前我正在使用 VisualSVN 服务器,它只能在我的家庭网络上访问。最终会有其他人访问它,但现在只有我,我希望能够去咖啡店(或任何地方)并且能够离开家工作。
目前我正在访问服务器http://user-pc:xx/svn/Projects/。当我设置我的路由器将端口 XX 转发到我的服务器时,我应该采取哪些步骤来保护服务器?
请记住,我是在 Windows 上执行此操作的,虽然我广泛使用常规命令提示符,但我使用 SVN 的时间并不长,而且到目前为止,除了 TortoiseSVN 之外,我还没有使用任何其他东西来处理它。
编辑:据我所知,攻击者可以做的唯一有害的事情是:猜测我的端口号、用户名和密码以进入存储库。然而俗话说的好,我不知道我不知道什么。
因此,我不一定要求逐步说明(尽管我当然也希望这样做),而是要求我在端口打开后可能进行的任何类型的攻击中需要考虑的事项。
我们偶尔会遇到 TortoiseSVN 的问题(我假设它是 Tortoise 而不是我们的 SVN 存储库),其中文件将被签入存储库(执行存储库浏览器,您可以在那里看到文件),并且将为该人存在谁提交了它们,但是当另一个人进行更新时,这些文件将不会添加到工作副本中。如果我然后从存储库浏览器中选择“复制到工作副本...”并尝试提交,这些文件对我来说被视为新文件,我的客户尝试添加它们,并给出错误。更新也会导致一些错误(我不知道如何重现这个,所以我不知道具体是什么导致了这个,我不记得确切的错误)。然后我必须从存储库中删除文件,并将文件提交为新文件。在这之后,
存储库通过 svn:// 协议访问到运行版本 1.4.6 的服务器。它托管在作为 Windows 服务运行的 Windows Server 2003 机器上。
存储库布局如下:
[存储库]/代码/[项目] [repository]/Code/[Website]/*这里的一些页面* [存储库]/数据/[杂项数据文件] [存储库]/References/[dlls/references]
这几乎只发生在 .aspx/.aspx.cs/.aspx.designer.cs 中,并且通常一次全部 3 个。好像整个“页面”不会添加到我的文件夹中。这发生在打开 Visual Studio 并运行解决方案的情况下,也没有打开 Visual Studio。
有没有人以前见过这个,你知道原因/解决方案吗?
我正在尝试备份我的 SVN 存储库。
我的问题:我忘记了将存储库放在硬盘上的哪个位置。
我怎样才能找到这个?
仅供参考:如果有帮助,我正在使用 TortoiseSVN。
我们使用带有 mod_svn 的 Apache 来为 subversion 存储库提供服务。Apache 连接到 LDAP 服务器,因此所有用户都可以使用他们的域密码。为了让构建机器能够结账,我想要一个额外的用户,但我无法通过 LDAP 添加。
我可以创建一个用户/密码必须匹配 LDAP 服务器或 htpasswd 文件的设置吗?
我有一个计划脚本,它每小时对我们的 Subversion 存储库进行 svnsync 备份。我从根 crontab 中的一个条目运行它没有问题,但决定我想从 /etc/cron.hourly 运行它以获得额外的可见性(并且因为我们的一位工程师不小心删除了 crontab,因为他认为“crontab -r" 的意思是"阅读 crontab ;-))
cron.hourly 脚本中的 svnsync 命令全部失败,并显示一条消息,指出需要接受 SVN 存储库的 SSL 证书(这是用户第一次访问 SVN 存储库时以交互方式获得的消息,但是一旦证书我接受消息不会再次出现)。
所以在我看来,从 cron.hourly 运行脚本时,脚本是在不同的用户环境下执行的,而不是通过 root crontab 运行时。谁能解释一下区别?
更新:我应该提到我的发行版,我在 CentOS 5.1 上使用 anacron。
更新 2:感谢到目前为止的建议;我认为这更像是一个 Subversion 问题。我总是尝试将我的环境封装到我的脚本中,但这里的问题是我不确定它在(或缺乏)环境中是什么使 SVN 在我运行我的脚本时要求接受 SSL 证书cron.hourly。我猜这与 run-parts 脚本的执行方式有关。
我们有一个在我们公司开发的电子商务应用程序。它是一个相当标准的 LAMP 应用程序,我们已经断断续续地开发了大约 3 年。我们在测试域上开发应用程序,在这里我们添加新功能并修复错误等。我们的错误跟踪和功能开发都在托管的颠覆解决方案 (unfuddle.com) 中进行管理。在报告错误时,我们会在测试域上进行这些修复,然后在我们对错误已修复感到满意时将更改提交到 svn。我们遵循相同的程序添加新功能。
值得指出的是,我们的系统和应用程序在我们的服务器上的总体架构。每次开发新功能时,我们都会将此更新推广到使用我们的应用程序(始终是我们控制的服务器)的所有站点。使用我们系统的每个站点在 95% 的代码库中基本上都使用完全相同的文件。我们在每个站点中有几个文件夹,其中包含为该站点定制的文件 - css 文件/图像等。除此之外,每个站点之间的差异由每个站点数据库中的各种配置设置定义。
这将进入实际部署本身。当我们准备好推出某种更新时,我们在测试站点所在的服务器上运行一个命令。这将执行复制命令 (cp -fru /testsite/ /othersite/) 并通过每个虚拟主机强制根据修改日期更新文件。我们托管的每个附加服务器都有一个虚拟主机,我们将生产代码库同步到该虚拟主机,然后我们在该服务器上的所有站点上重复复制过程。在此过程中,我们移出我们不想被覆盖的文件,并在复制完成后将它们移回。我们的 rollout 脚本执行许多其他功能,例如应用 SQL 命令来更改每个数据库、添加字段/新表等。
我们越来越担心我们的流程不够稳定,不具备容错能力,也有点暴力方法。我们也意识到我们没有充分利用 subversion,因为我们有一个立场,即开发新功能会阻止我们推出重要的错误修复,因为我们没有使用分支或标签。我们在我们的服务器上有如此多的文件复制似乎也是错误的。我们也无法轻松地对我们刚刚推出的内容执行回滚。我们确实在每次推出之前执行差异,以便我们可以获得将要更改的文件列表,以便我们知道之后更改了什么,但回滚过程仍然存在问题。就数据库而言,我已经开始将 dbdeploy 作为一种潜在的解决方案。不过,我们真正想要的是关于如何改进文件管理和部署的一般指导。理想情况下,我们希望文件管理与我们的存储库更紧密地联系在一起,因此推出/回滚将更多地与 svn 相关联。类似于使用 export 命令来确保站点文件与 repo 文件相同。如果解决方案也可以停止我们服务器周围的文件复制,那也很好。
忽略我们目前的方法,听听其他人如何解决同样的问题会非常好。
总结...
提前致谢
编辑:
我最近阅读了很多关于使用Phing和Capistrano执行此类任务的好文章。任何人都可以提供更多关于他们的信息以及他们对这种任务的表现如何?
svn ×10
backup ×2
linux ×2
tortoisesvn ×2
windows ×2
apache-2.2 ×1
bash ×1
centos ×1
cron ×1
deployment ×1
firewall ×1
git ×1
lamp ×1
ldap ×1
php ×1
repository ×1
security ×1
signals ×1
ssh ×1