|
|
@@ -590,65 +590,4 @@ This is Mono.
|
|
|
4. Git submodules maintenance
|
|
|
=============================
|
|
|
|
|
|
-These instructions are for developers working on code in this repository. End users do not need to be
|
|
|
-concerned with the procedures described below. The description applies to each of the submodules used
|
|
|
-by mono. To list the submodules in use run:
|
|
|
-
|
|
|
- git submodule
|
|
|
-
|
|
|
-If you have write access to the submodule repository do your work on it in a separate location, do not ever
|
|
|
-do any work in the mono copy of the submodule.
|
|
|
-
|
|
|
-All submodules should reside under the external/ directory off the top level Mono directory. If you want to add
|
|
|
-a new submodule, issue the following command from the Mono topmost directory:
|
|
|
-
|
|
|
- git submodule add REPOSITORY_URL external/MODULE_NAME
|
|
|
-
|
|
|
-After that commit and push the changes to .gitmodule and the submodule itself.
|
|
|
-
|
|
|
-4.1 Submodule repository of origin maintenance
|
|
|
-==============================================
|
|
|
-
|
|
|
-The submodule repository of origin (at the REPOSITORY_URL above) must always be modified outside the Mono directory.
|
|
|
-The repository may be a fork or clone of yet another GIT repository, either on github or elsewhere. If this is the case,
|
|
|
-you must configure your clone of it by adding a remote reference to the upstream repository:
|
|
|
-
|
|
|
- git remote add upstream UPSTREAM_URL
|
|
|
-
|
|
|
-When there exist upstream changes you need to merge, the following command needs to be used:
|
|
|
-
|
|
|
- git fetch upstream/master
|
|
|
-
|
|
|
-followed by
|
|
|
-
|
|
|
- git merge upstream/BRANCH_NAME
|
|
|
-
|
|
|
-and as soon as all the possible confilits are resolved, push the freshly integrated changes back to our repository
|
|
|
-
|
|
|
- git push origin/BRANCH_NAME
|
|
|
-
|
|
|
-4.2 Submodule maintenance in Mono repository
|
|
|
-============================================
|
|
|
-
|
|
|
-When the submodule repository of origin is ready to be used by Mono, you need to go to the top level directory of
|
|
|
-Mono repository clone and make sure the submodules are checked out and up to date:
|
|
|
-
|
|
|
- git submodule init
|
|
|
- git submodule update --recursive
|
|
|
-
|
|
|
-Then in order to integrate changes from the submodule repository of origin:
|
|
|
-
|
|
|
- cd external/MODULE_NAME
|
|
|
- git pull
|
|
|
-
|
|
|
-you can, of course, use a a specific commit in the 'git pull' above instead of the default HEAD. When the changes are
|
|
|
-checked out, commit the changes to the Mono repository:
|
|
|
-
|
|
|
- cd ../..
|
|
|
- git add external/MODULE_NAME
|
|
|
- git commit -m "Module MODULE_NAME updated"
|
|
|
- git push
|
|
|
-
|
|
|
-It is _extremely_ important not to end the 'external/MODULE_NAME' reference above with a / since that will make git remove
|
|
|
-the submodule reference and commit all its contents as normal files to Mono directory. It is also required that you _always_
|
|
|
-push the submodule changes _before_ any and all work requiring the changes is done in the Mono repository.
|
|
|
+Read documentation at http://mono-project.com/Git_Submodule_Maintenance
|