我需要设置一个Kohana开发环境,允许我在不同的应用程序中充分利用共享模块/系统类。每个应用程序通常属于不同的客户端。我使用Git进行源代码控制,但我正在努力想出一个干净的部署方法,这个方法允许我将仅特定于客户端/应用程序的开发环境的那些部分提取到该客户端的生产环境中(假设客户端的生产环境将安装Git)。
Dev环境:
- kohana
- applications
- clientapp1
- clientapp2
- modules
- public_html
- clientapp1
- clientapp2
- system
- 3.0.1
- 3.0.5
客户1的生产环境:
- /
- applications
- clientapp1
- modules
- public_html
- client_app1
- system
- 3.0.5
当然,我希望完全控制每个客户“子回购”,好像它是一个独立的回购(就gitignore等而言)。我已经看到了涵盖Git的sparse checkout功能的主题,但从维护的角度来看,似乎可能会引起一些问题,我不喜欢客户端中存在的整个repo元数据的想法生产环境回购。
你可能会说,我不是一个Git poweruser,所以非常欢迎任何建议/智慧!
答案 0 :(得分:1)
理想情况下,您的每个目录(app / clientapp1,app / clientapp2,public_html / clientapp1,...)都是子模块
即:主要项目git repo:
kohana
- applications
- modules
- public_html
- system
添加子模块的位置:
- kohana
- applications
- clientapp1 -> remote: /path/to/app_client1app Git repo
- clientapp2 -> remote: /path/to/app_client2app Git repo
- modules
- public_html
- clientapp1 -> remote: /path/to/pubhtml_client1app Git repo
- clientapp2 -> remote: /path/to/pubhtml_client2app Git repo
- system
- 3.0.1 -> remote: /path/to/sys Git repo, tag 3.0.1
- 3.0.5 -> remote: /path/to/sys Git repo, tag 3.0.5
您只使用子模块的事实允许您:
- /
- applications
- clientapp1 -> remote: /path/to/app_client1app Git repo
- modules
- public_html
- clientapp1 -> remote: /path/to/pubhtml_client1app Git repo
- system
- 3.0.5 -> remote: /path/to/sys Git repo, tag 3.0.5