我有一个网站,我保留在吉特。
它是一个ASP.NET WebForms网站(但这可能与此问题无关)。
我们的客户将该网站用于2个(未来4个)网站。
大部分功能是共享的。但是,像web.config和带有css的文件夹这样的一些东西对于每个网站都是唯一的。
这是代码的简化版本
|--后台办公室
|\--用户界面
|--后台.ui
|\--Web控件
|--后台测试
|--部署
|\--数据库
|--商业律师
||--垃圾箱
||--对象
|\--属性
|--脚本
|--网站
||--管理员
||--应用程序浏览器
||--应用程序代码
||--应用程序数据
||--样式
||--web.config文件
对于Git来说,一个好的结构是什么?
例如,后台代码将完全共享。
除了样式文件夹和web.config文件外,网站将被共享。
对于一个不会使合并和分支变得太长的结构,您有一个好的建议吗?
我试着做一个这样的结构:
主人
|--地点1
|--地点2
但是,我预见到在将代码从一个分支移动到另一个分支时会有太多的奇瑞选择。
子模块是正常的还是复杂的?
编辑:
我真正的大问题是我想直接从我的Git回购中部署。如果我离开这些目录/文件,它们将在合并期间合并,除非我做一些复杂的事情(然后我不能让团队中的每个人都这样做)。
或者我必须忽略这些文件并从其他地方获取它们…

最佳答案

假设主分支包含整个项目:

|--BackOffice
|  \--UI
|--BackOffice.UI
|  \--WebControls
|--BackOfficeTests
|--Deployment
|  \--db
|--BusinessLogicLayer
|  |--bin
|  |--obj
|  \--Properties
|--scripts
|--Website
|  |--admin
|  |--App_Browsers
|  |--App_Code
|  |--App_Data
|  |--Styles
|  |--web.config

现在,所有网站常见的任何更改都将提交给这个分支。
为不同的站点建立单独的分支。例子:
从总分行,
git checkout -b site1
git checkout -b site2
git checkout -b site3
git checkout -b site4

现在,只要您想更改任何特定于站点的文件,例如样式文件夹或web.config,就在这些分支中进行更改。
现在是部署部分。假设您要部署Site1,在基于master的本地系统上创建一个临时分支,将Site1分支合并到其中并部署它。最后删除临时分支。
git checkout -b temp
git merge site1

tar或zip您的代码并部署它。之后,
git checkout master
git branch -D temp

如果不想公开部署的方式,甚至可以制作一个小的shell脚本。让我们调用这个脚本deploy.sh,例如:
#!/bin/bash

if [ ! $1 ]; then
        echo "Please pass in the name of the site you want to deploy."
        exit 1
fi

#Check if we are on master branch
git status | grep "On branch master"
if [ $? -ne 0 ]; then
        echo "You are not on master. Please execute 'git checkout master'"
        exit 1
fi

#Check if the entered site for deployment actually exists
git branch | grep $1 || { echo "No branch $1 exists for deployment."; exit 1; }

#Update from remote
git checkout -b temp
git merge $1
tar -cvf deploy-$1.tar ./deploy.sh *
[ $? -ne 0 ] && echo "Some problem archiving the files..." && exit 1
git checkout master
git branch -D temp

echo "Please use deploy-$1.tar file to deploy the site. Thanks."

exit 0

现在,当您说./deploy.sh site2时,
这个脚本将在幕后完成所有的脏工作,并为您提供一个tar文件,您可以将其部署到生产服务器上。
我希望这有帮助…

08-27 21:19
查看更多