将未版本控制的文件添加到subversion

时间:2009-02-23 10:36:25

标签: svn version-control sitecore

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

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

有什么想法吗?


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

6 个答案:

答案 0 :(得分:14)

我将未版本控制的文件放在使用该项目的每个人都可访问的Web或文件服务器上,并自动添加脚本(wget / scp /等。)下载文件(如果需要,可以压缩)并将它们提取到svnignored个文件夹,这样它们就不会被subversion攻击。

如果您担心这些文件发生变化,那么:它们不应该被版本化吗?

svn:externals在这种情况下也可能有用。我认为可以根据情况允许轻松忽略它们。

答案 1 :(得分: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及其连接,其余设置即可共享。

(所以这不能解决模板的问题,但它可以帮助你管理一个很大的小模板)

答案 2 :(得分:4)

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

答案 3 :(得分:3)

您需要重新考虑如何使用subverion。 Subversion存储有关文件的版本信息;不多也不少。你不能在subversion中存储未版本控制的文件;没有任何意义。在颠覆中存储1GB的zip也不会有任何好处。

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

答案 4 :(得分:2)

只需使用模板文件即可。假设您的文件名为config.txt。查看文件并在本地设置应该插入一些标记,将其重命名为configTemplate.txt并提交它。然后每个开发人员应该检出文件,复制它,删除文件名的模板部分(这样每个人都得到正确的config.txt),并将新文件添加到忽略列表中。然后让每个人只需在标记位于模板文件中的本地设置中手动编辑,或者使用脚本为它们执行(如果可能)。

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

回复您的修改(和评论):

非自动生成的图像,文档和二进制文件应该全部置于版本控制之下。或者至少我认为没有任何理由让他们保持不变。

答案 5 :(得分:0)

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