【问题标题】:Confused situation with Mercurial与 Mercurial 混淆的情况
【发布时间】:2011-05-26 02:52:12
【问题描述】:

我处于这种情况:

首先,我刚开始使用 mercurial。 我有一个服务器,里面有一个我的 django 项目。

我想从本地计算机服务器上的项目目录中克隆存储库。

我已经这样做了:

user@host> cd myproject
user@host> hg init
user@host> hg add
user@host> hg commit -m "Added initial files."

我已经用hg clone ssh://user@host//path/to/project 克隆了repo。没关系,在我的电脑上我有我在服务器上的所有文件。

现在,我想编辑settings.py 以设置本地环境(数据库引擎和其他东西),但我不想更新服务器上的settings.py。编辑后,hg status 会返回给我M settings.py。即使我在本地仓库中设置了echo 'settings.py' > .hgignore,它也不起作用。对于工作目录中的目录staticmedia 和数据库my_database 也是如此。如何在服务器中设置 NOT 更新和提交的 mercurial?

我想在我的计算机和服务器上工作,并让所有两个 repo 始终同步。

有人能解释一下我该怎么做吗?我有点困惑。

谢谢!

【问题讨论】:

  • 我可以找出settings.py,但你为什么不希望静态/媒体同步?
  • 因为在静态中有django.contrib.auth 静态文件(带有 css、js 的管理面板),而在媒体中有头像图像、站点图像和其他东西。只有 media/css 和 media/js 包含我想要同步的文件。

标签: python django mercurial


【解决方案1】:

它不会直接回答您的问题,但我发现管理本地设置的好方法是将它们放在单独的文件中(被您的 SCM 忽略)并将它们加载到 settings.py 中。

比如把这个放在settings.py的底部:

 try:
   import settings_local
 except ImportError:
   pass  # Ignore when file doesn't exist

settings_local.py 中的任何内容都将覆盖settings.py 中的值。

编辑

更直接地回答您的问题,请参阅Mercurial ignore file 下的此答案。似乎不支持忽略已版本化的文件。我以前用 Subversion 做过,所以我明白你为什么要尝试它。其他答案有一些解决方法。

【讨论】:

  • 你不能从 Mercurial 记录中删除文件,然后忽略它吗?
  • @Eli 我相信您可以(请参阅其他答案),但如果您可以进行初始更改,从长远来看,这是一个更好的做法。
  • 我同意您回答的第一部分是解决 OP 问题的好方法。刚刚对 .hgignore 评论严格回复
【解决方案2】:

首先,如果settings.py 已经提交,那么忽略它不会改变这一点。你需要先

$ hg remove settings.py
$ echo 'glob:settings.py' > .hgignore

(据我所知,仅将文件名附加到 .hgignore 并没有任何作用,但我知道有不同的格式。无论如何,也要注意这一点。)

【讨论】:

  • 没错,但显然不是他想要的。
【解决方案3】:

我可以回答你问题的一部分:

如果文件与忽略文件 (.hgignore) 中的模式匹配,则如果它已被 mercurial 跟踪,则不会忽略它。这解释了为什么不忽略对 settings.py 的编辑;这是因为 settings.py 已经被跟踪了。当您执行命令hg add 时,会将所有文件添加到您的存储库中;也就是说,mercurial 开始跟踪它们(当时被忽略的除外)。

【讨论】:

    猜你喜欢
    • 2015-07-29
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多