Sharing Models between two Rails Projects - using git submodules?
I have a Rails website which has been divided into two sepa开发者_如何学JAVArate projects - the public site, and the administration site.
As both sites are using the same database the models are shared between the applications (actually right now they are duplicated). The problem I have here is that when an update to the models occurs in the public project I need to copy the changes over into the admin project.
I've had a look around SO and noticed that there was a question which had answers suggesting using svn:external or git submodule, but I'm not entirely sure how to do this.
Essentially my aim is to be able to make the changes in one place only, commit those changes to git and then be able to pull the changes in the other project when I need to update that as well.
You need to:
- commit the submodule in one place
- commit the main project (said the public site)
- go to the same submodule in the other main project (the admin site)
- pulling the latest content (changing the HEAD of that submodule)
- going one directory up in the main (admin) project
- commit (to record that you now reference a different version of the submodule)
See also true nature of submodules.
Do not use submodules. They are ugly, hard to understand and to maintain. Much better is to use subtrees.
Git subtree is a part of GIT since 1.7.11 and I wrote an article about sharing code between Rails applications: http://igor-alexandrov.github.com/blog/2013/03/28/using-git-subtree-to-share-code-between-rails-applications/
In short: yes git-subtree works and works great!
精彩评论