代码之家  ›  专栏  ›  技术社区  ›  Yuval Karmi

capistrano上传.git目录

  •  6
  • Yuval Karmi  · 技术社区  · 14 年前

    我在用Git和Capistrano。

    我在本地计算机上的文件夹中初始化了我的项目,如下所示:

    git init
    

    然后我把项目推到服务器目录 然后我打电话 cap deploy 除了将本地的.git文件夹结构以及我的.gitignore和capfile上载到一个公共可访问的文件夹之外,deploy可以工作。

    这是我的gitignore文件:

    .DS_Store
    uploads/**/*
    Capfile
    .gitignore
    .git/**/*
    

    这似乎不起作用。有什么帮助吗?

    谢谢!


    编辑:更新的.gitignore文件:

    将部署策略更改为导出:

    set :deploy_via, :export
    

    这适用于忽略.git文件夹,但下面显示的.gitignore文件的内容仍然没有考虑在内。

    .DS_Store
    includes/php/config.php
    /uploads
    Capfile
    .git
    





    编辑2(解决方案): 编辑1和下面的技巧结合在一起。 在.gitignore文件中列出之前已添加的文件将不断上载。假设我有以下.gitignore文件。

    .DS_Store
    includes/php/config.php
    

    然后我运行以下命令:

    git add .
    git commit -a -m 'some commit'
    

    然后我决定添加到我的.gitignore文件中,所以现在看起来像这样:

    .DS_Store
    includes/php/config.php
    Capfile
    

    然后我又跑了:

    git add .
    git commit -a -m 'another commit'
    

    现在我明白了 .DS_Store includes/php/config.php 尚未上载,但capfile已…这就是在我最初的问题中发生在我身上的事情。 原因:我认为只有在添加时才考虑.gitignore文件(即 git add . )如果我已经添加了文件,然后将它们放到.gitignore文件中,它们就已经添加到项目中了。我需要使用 git rm 命令删除它们。 我刚开始用一个新的.git repo解决了这个问题,但你不必-你可以删除你已经添加的任何文件,但现在想忽略 移除文件 命令。

    我选择了帮助我得出这个结论的答案作为正确的答案,尽管完整的解决方案只是上面的详细说明。

    2 回复  |  直到 14 年前
        1
  •  16
  •   zzawaideh    14 年前

    您的部署策略是什么?

    是否有capistrano设置来排除.git文件? 如果您正在使用 set :deploy_via, :copy 然后确保添加以下内容:

    set :copy_exclude, [".git/*", ".svn/*", ".DS_Store"]

    否则使用 set :deploy_via, :export 应该忽略源代码管理文件夹

    http://www.capify.org/index.php/Understanding_Deployment_Strategies

        2
  •  1
  •   Community CDub    7 年前

    看一看 similar question ,您似乎不需要通配符选择器,只需要:

    uploads/
    

    您需要通过部署 :git 在卡皮斯特拉诺做出口。它本质上是一个 git clone 然后删除 .git 之后的目录。

    你的问题和帽子没什么关系。确定你的 .gitignore 文件工作正常。