10

是否可以将不应该版本化的文件添加到 subversion?前任 需要编辑以匹配每个单独的环境的配置文件。当新程序员连接到项目时,他应该从 subversion 获取原始文件,但在编辑后不会提交,更新时不会被覆盖。

也许为整个原始项目创建一个标签是解决方案?首先下载标签然后从主干更新?

有任何想法吗?


澄清以下评论:该项目(Sitecore)由大约 30k 个不同的文件组成。我们需要对其中的 100 个进行版本化。如果我们应该在版本控制中包含所有文件,那么每次提交都需要永远(因为乌龟搜索所有文件夹)。今天我们创建一个包含所有未版本化文件夹的 zip 文件,在 svn 中将文件夹设置为忽略,然后添加 zip。问题是当我们需要更改 zip 中的一个或多个文件时,我们需要向 repo 提交一个新的 ~1GB-zip。

4

6 回答 6

14

我会将未版本控制的文件放在每个使用该项目的人都可以访问的网络或文件服务器上,并添加一个脚本以自动(wget/ scp/etc.)下载文件(如果需要,压缩)并将它们解压缩到svnignored文件夹中,以便它们不要被颠覆所接受。

如果您担心这些文件会发生变化,那么:不应该对它们进行版本控制吗?

svn:externals在这种情况下也可能有用。我认为如果情况允许,它们可以很容易地被忽略。

于 2009-02-23T10:41:48.850 回答
5

在某些情况下,甚至不需要为每个开发人员创建 web.config,因为 .Net 配置格式允许通过 configSource 属性覆盖配置文件的特定部分。

configSource 属性指定一个文件名(当文件存在时)覆盖指定的块,当它不存在时,块按原样使用。

<?xml version="1.0"?>
<configuration>
  <connectionStrings configSource="connections.config">
      <add name="LocalSqlServer" 
           connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
           providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

在开发者系统上,你可以只为他添加一个带有连接的connections.config,而其余的设置可以共享。

(所以这并不能解决模板的问题,但它可以帮助您管理一个大模板和许多小模板)

于 2009-02-23T11:35:26.693 回答
4

我将创建一个在运行时生成配置文件的脚本。这样,您无需担心 SCM 会妨碍您。

于 2009-02-23T10:38:20.433 回答
3

您需要重新考虑如何使用 subverion。Subversion 存储文件的版本信息;不多不少。您不能在 subversion 中存储未版本化的文件;没有任何意义。将 1GB 的 zip 文件存储到 subversion 中也无济于事。

您应该研究开发人员可以通过用户主目录中的个性化配置文件或环境变量来覆盖此文件中的设置的方法。

于 2009-02-23T12:55:12.150 回答
2

只需为此使用模板文件。假设您的文件名为 config.txt。查看文件并在本地设置应该去的地方插入一些标记,将其重命名为 configTemplate.txt 并提交。然后每个开发人员都应该检查该文件,制作一份副本,删除文件名的模板部分(这样每个人都会得到正确的 config.txt),并将新文件添加到忽略列表中。然后要么让每个人简单地在模板文件中标记所在的本地设置中手动编辑,要么使用脚本为他们做这件事(如果可能的话)。

模板文件永远不会改变(当然,除非配置文件的格式有所不同)。

回复您的编辑(和评论):

不是自动生成的图像、文档和二进制文件可能都应该置于版本控制之下。或者至少我看不出有什么好的理由让它们保持不受版本控制。

于 2009-02-23T10:39:27.687 回答
0

让每个程序员在他们自己的分支上工作,并让他们将他们的更改合并回主分支/主干。当然,您的团队成员需要在使用版本控制方面达到最新水平,并且能够使用的不仅仅是签出、更新和提交。

于 2009-02-23T21:32:46.197 回答