【问题标题】:How to don't let file to be uploaded to repository?如何不让文件上传到存储库?
【发布时间】:2011-01-26 19:05:05
【问题描述】:

是否可以阻止指定的文件(路径)提交到存储库?

例如,我们需要somepath/database_config.php 不能被提交。

我尝试使用svn:ignore 属性,但它似乎只适用于工作副本,不适用于存储库。

我已经阅读了 svnbook.red-bean.com 关于此功能的信息,但我觉得我的大脑无法真正理解为什么事情不能按我想要的那样工作。

【问题讨论】:

  • svn:ignore 应该做你需要的。你能澄清一下你想要阻止什么吗?
  • 当我尝试将 svn:ignore 设置为存储库中的文件名时,svn 说:“Setting property on non-local target 'https://example.com/sample_path/config' needs a base revision”
  • 您应该在从存储库中签出的本地版本上进行 propset。我不认为你可以直接在 repos 上设置它。

标签: svn version-control repository svnignore


【解决方案1】:

仅供参考:svn:ignore 仅在要忽略的文件不在存储库中时才有效。

在存储库中添加配置文件时,我所做的是创建一个将保存在存储库中的模板文件,然后忽略特定于每个开发人员的配置文件。 因此,任何签出代码的人都必须重命名没有.template 扩展名的模板,并将其本地配置放入其中。

这样,每个开发者都可以有不同的配置而不影响每个人。

即: 模板文件:database_config.php.template

$config = array(
    'host'     => 'XXXX', 
    'db'       => 'XXXX', 
    'user'     => 'XXXX', 
    'password' => 'XXXX', 
);

配置文件:database_config.php

$config = array(
    'host'     => 'XXXX', 
    'db'       => 'XXXX', 
    'user'     => 'XXXX', 
    'password' => 'XXXX', 
);

您可以将这些 svn 命令添加到您的存储库中。

// Add the template
svn add database_config.php.template
// Ignore the config file used by the system (Should not be in repository)
svn propset svn:ignore "config.php" .
svn commit

【讨论】:

  • @Azat,不,您在添加模板文件的目录上执行一次。在那之后,忽略将对每个人都有效。它永远不会出现在svn status
  • 我尝试在存储库的目录中执行此操作,但 svn 告诉我他“需要一个基本修订版”。
  • 我试试svn propset svn:ignore https://example.com/somepath/system/application/config/database_config.php https://example.com/somepath/system/application/config
  • @Azat,您不能直接在存储库上设置属性。您应该检查它,进行更改并提交。您只能直接对 svn cp 的 repos 和其他一些将参数 -m 用于提交消息的命令进行更改。
【解决方案2】:

您可以使用svn lock 命令来防止特定文件或路径在存储库中被更改。所以,为了防止某个文件永远被提交,你可以简单地提交一个空文件(或者包含“不要提交这个文件 - 配置应该只在本地机器上进行”),并且然后在本地更改您的文件以包含任何必要的内容。

锁定文件后,您可以限制其他人修改锁定或文件本身,但此时如果您的开发人员正在摆弄一个明显打算被锁定的文件,我会开始唧唧喳喳他们四处寻找并考虑删除他们对该存储库的所有写访问权限。

更多信息请访问manual entrymore detailed documentation

【讨论】:

  • 无论如何,其他人将有能力强制解锁这个文件,对吧?
  • 嘿,Jeff 删除了stackoverflow.com/questions/234075/…,所以我不会取消删除和迁移。如果你真的在乎,我会去 meta 问问。
  • 如果有人锁定了某个文件(甚至是我),它不会让我将任何其他更改从工作副本提交到存储库。
  • @Azat:这不正是你想要的吗?你说“不要让文件上传”。
  • Ether,问题是它根本不允许我提交任何更改。甚至是与被阻止无关的其他文件。
猜你喜欢
  • 2017-01-09
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 2021-03-06
  • 2015-06-12
  • 2021-09-04
  • 2020-02-08
  • 2020-04-08
相关资源
最近更新 更多