X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=README.md;h=36a9c1ef398279ceb8e00e30a79ad03f09788f13;hb=0341f06e99c8534966b91bc3908be1ed3987920f;hp=c75226e5bd0af9093a0fe0ae4d5e1f0124702d52;hpb=48992d4b3f8b568be17180372160d2f3e03b8ccb;p=mono.git diff --git a/README.md b/README.md index c75226e5bd0..36a9c1ef398 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ -Mono is a software platform designed to allow developers to easily create cross platform applications. -It is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. +Mono is a software platform designed to allow developers to easily +create cross platform applications. It is an open source +implementation of Microsoft's .NET Framework based on the ECMA +standards for C# and the Common Language Runtime. 1. [Compilation and Installation](#compilation-and-installation) 2. [Using Mono](#using-mono) @@ -7,6 +9,7 @@ It is an open source implementation of Microsoft's .NET Framework based on the E 4. [Contributing to Mono](#contributing-to-mono) 5. [Reporting bugs](#reporting-bugs) 6. [Configuration Options](#configuration-options) +7. [Working with Submodules](#working-with-submodules) **Build Status** @@ -67,7 +70,7 @@ which contains just enough to run the 'mcs' compiler. You do this with: This will download and place the files appropriately so that you can then just run: - make EXTERNAL_MCS=${PWD}/mcs/class/lib/monolite/basic.exe + make The build will then use the files downloaded by `make get-monolite-latest`. @@ -152,44 +155,47 @@ same prefix than this module gets. Contributing to Mono ==================== -Before submitting changes to Mono, please review the [contribution guidelines](http://www.mono-project.com/community/contributing/). -Please pay particular attention to the [Important Rules](http://www.mono-project.com/community/contributing/#important-rules) section. +Before submitting changes to Mono, please review the [contribution +guidelines](http://www.mono-project.com/community/contributing/). +Please pay particular attention to the [Important +Rules](http://www.mono-project.com/community/contributing/#important-rules) +section. Reporting bugs ============== -To submit bug reports, please use [Xamarin's Bugzilla](https://bugzilla.xamarin.com/) +To submit bug reports, please use [Xamarin's +Bugzilla](https://bugzilla.xamarin.com/) Please use the search facility to ensure the same bug hasn't already -been submitted and follow our [guidelines](http://www.mono-project.com/community/bugs/make-a-good-bug-report/) +been submitted and follow our +[guidelines](http://www.mono-project.com/community/bugs/make-a-good-bug-report/) on how to make a good bug report. Configuration Options ===================== -The following are the configuration options that someone -building Mono might want to use: +The following are the configuration options that someone building Mono +might want to use: -* `--with-sgen=yes,no` - Generational GC support: Used to enable or disable the -compilation of a Mono runtime with the SGen garbage collector. +* `--with-sgen=yes,no` - Generational GC support: Used to enable or +disable the compilation of a Mono runtime with the SGen garbage +collector. * On platforms that support it, after building Mono, you will have -both a `mono` binary and a `mono-sgen` binary. `mono` uses Boehm, while -`mono-sgen` uses the Simple Generational GC. +both a `mono` binary and a `mono-sgen` binary. `mono` uses Boehm, +while `mono-sgen` uses the Simple Generational GC. -* `--with-gc=[included, boehm, none]` - Selects the default Boehm garbage -collector engine to use. +* `--with-gc=[included, boehm, none]` - Selects the default Boehm +garbage collector engine to use. - * *included*: (*slighty modified Boehm GC*) -This is the default value for the Boehm GC, and it's -the most feature complete, it will allow Mono -to use typed allocations and support the debugger. + * *included*: (*slighty modified Boehm GC*) This is the default +value for the Boehm GC, and it's the most feature complete, it will +allow Mono to use typed allocations and support the debugger. - * *boehm*: -This is used to use a system-install Boehm GC, -it is useful to test new features available in -Boehm GC, but we do not recommend that people -use this, as it disables a few features. + * *boehm*: This is used to use a system-install Boehm GC, it is +useful to test new features available in Boehm GC, but we do not +recommend that people use this, as it disables a few features. * *none*: Disables the inclusion of a garbage collector. @@ -448,3 +454,53 @@ http://code.google.com/p/nativeclient/ * Currently this is used with Mono's AOT engine as Native Client does not support JIT engines yet. + +Working With Submodules +======================= + +Mono references several external git submodules, for example +a fork of Microsoft's reference source code that has been altered +to be suitable for use with the Mono runtime. + +This section describes how to use it. + +An initial clone should be done recursively so all submodules will also be +cloned in a single pass: + + $ git clone --recursive git@github.com:mono/mono + +Once cloned, submodules can be updated to pull down the latest changes. +This can also be done after an initial non-recursive clone: + + $ git submodule update --init --recursive + +To pull external changes into a submodule: + + $ cd + $ git pull origin + $ cd + $ git add + $ git commit + +By default, submodules are detached because they point to a specific commit. +Use `git checkout` to move back to a branch before making changes: + + $ cd + $ git checkout + # work as normal; the submodule is a normal repo + $ git commit/push new changes to the repo (submodule) + + $ cd + $ git add # this will record the new commits to the submodule + $ git commit + +To switch the repo of a submodule (this should not be a common or normal thing +to do at all), first edit `.gitmodules` to point to the new location, then: + + $ git submodule sync -- + $ git submodule update --recursive + $ git checkout + +The desired output diff is a change in `.gitmodules` to reflect the +change in the remote URL, and a change in / where you see +the desired change in the commit hash.