【发布时间】:2014-05-18 14:29:32
【问题描述】:
我正在使用新发布的Dropbox webhooks 设置我的 Pelican 博客的自动部署。每次我在 Dropbox 中更改文件时,它都会将 POSTs 发送到我的 Heroku 应用程序,该应用程序执行以下操作:
- 从 Dropbox 下载内容
- 在新内容上运行
pelican以复制博客。输出到我的 Github Pages repo 的本地克隆。- 这将删除存储库中当前存在的所有内容,并将其替换为新生成的博客。 不幸的是,这也会删除 .git 目录。
- 我的
.git/丢失了,所以我运行git init并读取了遥控器。 - 我运行
git pull origin master来同步它们。 - 使用
git add -A .跟踪所有更改、新文件和删除。 - 提交、推送到 Github。
面临的问题是在第 4 步,当我运行 git pull 时,它会从 repo 中提取所有原始信息——包括我想要删除的文件。例如,如果我删除一个帖子,当我运行 pelican 时,它会从 repo 中正确删除,它会删除整个文件夹并在没有文件的情况下重新生成博客——但是当我运行 git pull 时,该文件会重新出现。我无法跟踪删除了哪些文件,因为当我运行 pelican 时删除了 .git/ 时,我丢失了我的 git 历史记录。
最后,我要做的就是运行pelican,替换 repo 的全部内容,然后添加所有更改/删除/添加,然后将 repo 推送到 Github。我永远不需要有关当前存储库中内容的信息,因此如果有帮助,运行git reset 对我来说不是问题。我该怎么做?
【问题讨论】:
-
要减轻损坏,请尝试重新定位 .git:
mv .git ../somewhere/outside; echo git: ../somewhere/outside >.git。这样,当pelican开始变得粗心时,只需重做 echo 即可修复它。听起来真正的解决方案是让pelican停止删除您不想删除的内容。 -
同意,但我希望学习一种 git 方法。
-
目标是创建文章帖子的易用性,因此我希望能够简单地将新的 Markdown 文件拖放到我的 Dropbox 中,例如 Scriptogr.am。使用git的原因很简单,就是博客托管在GitHub页面上,这就需要我使用git来推送最终的静态站点输出。我认为在这种情况下使用 dropbox + git 不会有问题,而且上面的问题确实与 dropbox 完全无关。
-
听起来实际问题是“如何阻止 pelican 删除 .git 文件夹” - 问题中的其余信息并不那么相关。看起来是known "feature"
-
这不是问题,我知道该怎么做——但它最终成为解决问题的最佳方法。
标签: git github webhooks pelican