0

我计划创建一个新网站,它将使用我新移至 Git 的一些库。我已经对 Bitbucket 进行了提交后挂钩,并在我的 Web 主机的根目录中有一个 PHP 部署脚本。我的意图是,当我进行推送时,它被部署到服务器上。这个问题是关于如何组织我网站中的内容和库。

  • 我有一个自定义版本的 CodeIgniter
  • 我有一些需要使用的库(来自旧项目)
  • 所有这些都是 git repos 但不遵循 CodeIgniter 文件夹结构
  • 我的服务器没有 git
  • 部署脚本是这样的,它会下载 repo 并提取它,没什么特别的
  • 所有资源都在[root]/src文件夹中

理想情况下,我想做这样的事情。

  • 转到src,从我的 CodeIgniter 库中进行某种提取
  • 到库文件夹并获取我喜欢的每个库
  • 当其中任何一个进入另一个稳定版本时,请转到相应的文件夹并更新

在做了一些阅读之后,这就是我的位置。

  • 我也许可以在 CodeIgniter 存储库中添加一个遥控器。当它更新时,我可以rebase
  • 我可以使用 git 子模块,但它不会部署 src(我需要 src 用于部署目的)
  • 我可能不能简单地添加遥控器并获取库,因为它们不遵循 CodeIgniter 文件夹结构

据我了解,最好的解决方法是更改​​库的文件夹结构以遵循 CodeIgniter 标准并rebase在必要时执行。

我可以为此做任何其他工作吗?

高度赞赏帮助。

4

1 回答 1

1

这是一个基于我对您原始帖子的评论的工作示例。在这个简单的示例中,我对跟踪python_koans项目感兴趣,但在本地我只想要一个koans/包含 Python 2 koans python 文件的文件夹python_koans/python2/koans/。换句话说,我想要我的项目中的文件版本完全不遵循原始项目的文件结构,但我不想不断地与python_koans项目的结构作斗争。用于救援的符号链接。

mkdir myproj
cd myproj
git init
git commit --allow-empty -m'Add empty, initial commit'
git submodule add https://github.com/gregmalcolm/python_koans.git
git add python_koans
git commit -m'Add python_koans project as submodule'
mkdir koans
cd koans
ln -s ../python_koans/python2/koans/*.py .
cd ..
git add koans
git commit -m'Track python_koans locally in koans/ via symlinks'

现在您正在跟踪 中的python_koans项目python_koans/,并且您只需从该结构的深处将您关心的文件符号链接到您的项目中,就像您想要的那样。在您的git 存储库中,您只跟踪您自己的符号链接(并且当前提交 python_koans 子模块已打开)。

此时,您可以为自己创建一些帮助程序,例如用于刷新符号链接的 shellcd koans脚本ln -sf ../python_koans/python2/koans/*.py .。您可以编写更多内容来清除上游删除的文件的陈旧链接,并可能以其他方式检查整体层次结构,或者如果您足够相信自己这样做,则只需手动处理。

为什么还要制作子模块?您可以将最新的内容从python_koans您的主文件夹中的存储库中提取出来,然后将其中的内容更新到您的结构中,但是您无法轻松地回到过去。通过制作其他项目的子模块,您可以cd submodule_folder; git pull,然后在您的文件夹中退出git add submodule_folder; git commit -m'Pull latest from other_project',然后您可以在以后的任何时间点签出并使子模块的项目也回滚到正确的时间,以及让您的符号链接自行更新到那个时间点来匹配。

于 2013-05-19T09:07:22.677 回答