所以我使用Capistrano(v2)来部署使用Perch(grabaperch.com)构建的网站。当用户(在实时服务器上)在Perch中创建“页面”时,系统会创建一个实际的.php文件,其中包含该页面使用的“主页”。显然,这会导致回购过时。
为了解决这个问题,我想知道是否可以使用Capistranos钩子中的一个来检查服务器上文件的状态并提示用户选择:
a)通过将新文件推回到仓库来更新仓库
b)忽略(不确定原因,但这可能有用)
此外,这可能(可能?)在每个文件(或文件夹)的基础上完成,以便更好地控制最终受版本控制的内容。
作为Capistrano和Ruby的相对新人 - 我不知道如何或是否可以这样做。
所以我的问题是:
a)一个好主意
b)可能的
c)如果(a&& b)怎么样?(如果这个问题对于SA来说不够具体,我会道歉 - 我不知道还能在哪里问它)
答案 0 :(得分:1)
嗯,这可能是可能的,但你会很努力地实现它。
在签出存储库之前,您需要一个任务,该存储库将检查current
目录中是否有更改的文件。
您可以将git ls-files . --exclude-standard --others
用于未跟踪和git ls-files -m
用于已修改的文件,如果有输入则您必须提交这些文件并将其推送到存储库中。
如果您在capistrano签出最新master
之前完成了该操作,那么它现在将使用您的新文件检出最新的master
。
现在,如果您希望能够控制要添加到repo的文件,哪个不能正确配置.gitignore
,或者您可以使用从{{1}返回的输出与其他一些宝石一样,highline,maybe this will help you(capistrano曾经在DSL中拥有git ls-files
模块,但它已经消失了。
所以是的,这是可能的。
你应该这样做吗?
这取决于Perch是否有任何影响。 我之前从未使用过Perch所以我部分理解为什么他们创建额外的文件,而且你还必须检查已删除的文件(如果Perch删除了用户不再使用的页面)或者你将有垃圾在您的git存储库中(在好的情况下),在更糟糕的情况下,您会遇到数据不一致的问题。
希望这有帮助。
答案 1 :(得分:0)
我猜测有可能做一些capistrano魔术来更新repo(或忽略)这些文件,但是我认为'pages'实际上是你的数据。这是对的吗?
如果是这样的话,我想知道你为什么要在回购中或为什么回购已经过时呢?
如果它们实际上是网站上的数据,我会考虑将“页面”数据指向不同的路径,然后使用.gitignore文件,以便从git repo中忽略它们。 .gitignore文件是一种告诉git你不想包含git存储库目录下的某些文件或文件夹的方法。
这有帮助吗?