如何为存在于共享目录中的Web应用程序创建单独的Git存储库,以便我可以通过GitHub将它们部署到生产中? Web应用程序设置是常见的惯例,所以如果没有办法实现这一点,我会感到惊讶。
对于每个应用程序,索引文件和资产都位于各自的public_html
目录中:
/home/user/public_html/app1
/home/user/public_html/app2
/home/user/public_html/app3
每个网站的应用程序文件都位于各自的上级目录中:
/home/user/app1
/home/user/app2
/home/user/app3
那么在哪里运行git init
以获得每个应用程序的回购?以下是挑战:
git init
目录中的"user"
将为其创建一个回购
所有申请git init
中的"/home/user/public_html/app1"
不会
在"/home/user/app1"
git init
中的"/home/user/app1"
将不包括在内
"/home/user/public_html/app1"
注意:此问题经过大量编辑后,使用非IIS术语,希望能更好地传达问题。
答案 0 :(得分:1)
我认为有三种方法可以做到这一点。
第一个是使用git submodule
。基本上,您在目录/home/user
中创建一个主仓库,它恰好将所有其他存储库等作为子模块。在这种情况下,每个应用需要2个存储库,一个用于app_n
,另一个用于public_html/app_n
。使用2个应用程序检查以下示例说明:
#Create the repositories etc
cd test && mkdir repositories && cd repositories
mkdir app1 app2 public_html_app1 public_html_app2
cd app1/ && git init && touch file && git add . && git commit -m "msg" && cd ..
cd app2/ && git init && touch file && git add . && git commit -m "msg" && cd ..
cd public_html_app1/ && git init && touch file && git add . && git commit -m "msg" && cd ..
cd public_html_app2/ && git init && touch file && git add . && git commit -m "msg" && cd ..
#Create the master repo and add submodules
cd .. && mkdir deployment && cd deployment
git init && mkdir public_html
git submodule add ../repositories/app1 app1
git submodule add ../repositories/app2 app2
git submodule add ../repositories/public_html_app1 public_html/app1
git submodule add ../repositories/public_html_app2 public_html/app2
git commit -m "creating repo structure"
在上面,部署目录类似于/home/user/
目录。
执行此操作的第二种方法是在public_html
目录中创建app_n
目录,并从那里提供静态资产等。这应该可以使用apache或您正在运行的任何Web服务器轻松配置。
第三种方法是使用symlinks。由于您使用的是IIS,因此无法为您工作(您需要在Windows上浏览虚拟目录)。
实质上,您可以在public_html目录中创建符号链接。仅使用应用程序跟踪您的public_html
文件,但是,您可以在public_html
目录中创建符号链接。检查以下步骤,为2应用场景重现相同的内容
mkdir -p app1/public_html app2/public_html public_html
ln -sf app1/public_html/ public_html/app1
ln -sf app2/public_html/ public_html/app2
答案 1 :(得分:0)
我建议为/home/user/app1
级别的每个应用创建一个git存储库。然后在每个目录中创建一个assets
目录。然后,您可以将/home/user/public_html/app1
符号链接到/home/user/app1/assets
。
+---home
+---user
+---app1 (git repo)
| +---assets
+---app2 (git repo)
| +---assets
+---public_html
+---app1 -> /home/user/app1/assets
+---app2 -> /home/user/app2/assets
git存储库将包含您的应用程序和资产文件,但Web服务器仍然可以访问资产文件。
或者,您可以重新配置Web服务器以直接访问assets
目录。
答案 2 :(得分:-1)
所以从我得到的映射的想法是它是这样的:
一些fodlder
|
- > wwwroot文件
|
- >指数
资产
|
- >的Inetpub
所以wwwroot和inetpub在同一个主文件夹中
如果是这种情况,那么你需要在你的主文件夹中启动你的git init(上面标记为“some folder”),如果你的“主文件夹”中有其他文件和文件夹,那么你必须手动将文件添加到你的提交,在这种情况下使用'git add wwwroot / assets / somepicture.png'(带有''offcourse)
如果您选择在这个建议的情况下执行git add --all,您可以将主文件夹中的所有文件添加到您的提交中,这样做不是最好的做法。