我正在构建一个web应用程序,它有两个独立的组件:在用户浏览器中运行的前端(Javascript+Angular)和在我的服务器上运行并向所有前端提供数据的后端REST Api(Python/Django)。该应用程序的两个部分被放置在两个独立的Git存储库中,并存储在BitBucket中。
前端向用户显示数据,赢得了一个漂亮的界面,其中定义了许多漂亮的CSS。后端向用户发送电子邮件。
我希望电子邮件的外观和感觉与前端的显示完全匹配。所有用户的交互都应该有一个统一的表示。那么,我应该把CSS放在哪里/如何放置,以便它在两个存储库中都可用,但我只需要在一个地方对它进行更改??
我如何使用我正在使用的工具做到这一点:Git&Bitbucket?
我认为CSS应该放在一个单独的"第三"项目中
特别是因为您甚至可能想为另一个项目重用漂亮的CSS,或者将现有项目分解为更多的存储库。
因此,策略是:
- 创建第三个存储库,例如project_css
- 在两个当前项目中,使用
git subtree
或git submodule
添加对该存储库的引用
例如,如果您希望git subtree
将第三个项目的文件作为两个现有项目的一部分,那么您可以使用类似以下的博客/教程:
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/
无论您使用git subtree
还是git submodule
,这取决于您所能接受的权衡。
在git预提交钩子中编写一个脚本,如果css文件发生了更改,那么脚本可以将更改推送到BitBucket。参见
git help githooks
您可以通过添加第二个远程存储库将两个存储库合并为一个
它更容易维护。
选择一个存储库,我们称之为repo1
。第一步是在repo1
中添加第二个远程存储库,称为repo2
。这是你的第二个项目。然后将repo2
的分支提取到您的repo1
中。所有分支都将"愉快"地坐在一个存储库中。
下一步是将两个项目的主线合并为一个分支。如果文件夹和文件彼此不"冲突",这将完美地工作。在执行此操作之前,您可能需要重命名某些文件夹。
现在,这两个项目坐在一起,可以共享CCS文件。之后,您可以忽略repo2
。
整个操作在本地存储库中完成。完成后,您将所有内容推送到中央服务器,如BitBucket。
其概念是,git存储库只是分支的"房子"。如果这些分支没有共同的祖先,那也没关系。我们使用这种方法来减少紧密合作的项目的存储库数量。