User Tools

  • Logged in as: anonymous (anonymous)
  • Log Out

Site Tools


mantisbt:git_submodules

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
mantisbt:git_submodules [2013/08/30 20:30]
dregad Fix broken link, remove WIP comment
mantisbt:git_submodules [2014/04/30 13:00] (current)
dregad Added update from within the submodule (phpmailer example)
Line 120: Line 120:
 Submodule path '​library/​adodb':​ checked out '<​commit sha>'​ Submodule path '​library/​adodb':​ checked out '<​commit sha>'​
 </​code>​ </​code>​
 +
 +
 +
 +
 +
 +
 +
 +===== Updating a Library'​s submodule =====
 +
 +This section describes the process to update a submodule when a new version of a library has been released upstream.
 +
 +==== Updating via an external repository ====
 +
 +The example given here are for the ADOdb library, but the same logic should apply (possibly with some variations) to other submodules as well.
 +We assume that you already have a local repository configured with the appropriate remotes (//​upstream//​ for the library'​s official repository and //origin// for the MantisBT fork)
 +
 +  - Update the library'​s fork in the //​mantisbt//​ Github organization ​
 +    * Get the latest from upstream <​code>​
 +cd /​path/​to/​local/​adodb
 +git fetch upstream
 +</​code>​
 +    * Optional: update the //master// branch <​code>​
 +git rebase upstream/​master master
 +</​code>​
 +    * Update the branch <​code>​
 +git checkout mantis-1.3
 +git merge v5.19
 +</​code>​
 +    * Resolve any conflicts
 +    * Push changes to the fork <​code>​
 +git push origin --tags master mantis-1.3
 +</​code>​ Note that it's not strictly necessary to push the tags or the master branch. Having the tags allows a better description of the submodule'​s current commit when running ''​git submodule''​ (see example at the end of this section)
 +  - Update the submodule
 +    * Go to your local mantisbt repository and update it<​code>​
 +cd /​path/​to/​mantisbt
 +git checkout master
 +git pull
 +</​code>​
 +    * Go to the submodule'​s directory and checkout the branch <​code>​
 +cd library/​adodb
 +git checkout mantis-1.3
 +git pull
 +cd ..
 +</​code>​
 +  - Update ''​README.libs''​ to reflect the new version
 +  - Commit the changes <​code>​
 +git commit -a
 +</​code>​
 +
 +At this point, checking the submodules'​ status should give you a "​clean"​ list , e.g. (notice no '​+'​ sign in column 1)
 +
 +<​code>​
 +$ git submodule ​
 + ​9346d288a1b7f7a50cc35b6a0e56d29e9d000ecf adodb (v5.19-6-g9346d28)
 + ​75a4e5595c0dfcb2e2e1e41b9ba2282828d3f292 disposable (release-2.0.0-3-g75a4e55)
 + ​cb771839899d9f6be9f1268b986c30327ff1199b phpmailer (v5.2.6-2-gcb77183)
 + ​41beaddd279c695aacb63407e2c98b04b7eaff51 securimage (heads/​mantis)
 +</​code>​
 +
 +==== Updating from within the submodule ====
 +
 +It's worth mentioning that step 1 above can also be performed straight from the submodule itself (see example below for phpmailer), provided of course that the remotes (origin and upstream) have been properly configured.
 +
 +**WARNING**:​ if you update the submodule in-place, it is critical that you actually push the changes to //origin// otherwise the other developers will have an corrupted repository with missing commits when they pull the changes.
 +
 +  * Update the submodule from upstream <​code>​
 +cd library/​phpmailer
 +git fetch upstream
 +git rebase upstream/​master master
 +git checkout mantis
 +git merge v5.2.7
 +# Resolve conflicts
 +</​code>​
 +  * Push changes to the fork - **don'​t forget this step !**<​code>​
 +git push origin --tags master mantis
 +cd ..
 +</​code>​
 +  * Edit ''​README.libs''​
 +  * Commit the changes <​code>​
 +git commit -a
 +</​code>​
 +
  
mantisbt/git_submodules.1377909030.txt.gz ยท Last modified: 2014/04/30 11:53 (external edit)