WWW: Updated contribute page with info about git.

SVN revision: 84375
This commit is contained in:
Tom Hacohen 2013-02-26 10:48:15 +00:00
parent 3d48e5dfb2
commit eabe5a4380
1 changed files with 44 additions and 87 deletions

View File

@ -12,117 +12,74 @@
<h2>Source</h2>
<p>
All our source code is available from our SVN source repository at
all times. If we actually are moving seriously on a piece of code,
All our source code is available from our GIT source repositories. It used
to be SVN, and we are now in the process of switching between the two. If a
repository is available by GIT, use that one.
If we actually are moving seriously on a piece of code,
it will make its way to our <?php a("download", "download");?> page.
For something supported, look there. If you want to help with
development or are just hyper-curious and want to see what's in our
workshop, then you will want to <a
href=http://trac.enlightenment.org/e/browser/trunk>browse through
our SVN repository</a>. Alternatively, you will want to check it out.
href=http://git.enlightenment.org>browse through
our GIT repositories</a>. Alternatively, you might want to clone it.
</p>
<p>
Our SVN repository is not small. There's currently over 1.5 million
lines of C source code alone in there. Along with some other
languages. A full local checkout will use about 1.2 GB of local disk
Our list of GIT repositories consists of many little projects.
Our core projects, Enlightement, EFL, and Elementary, are prefixed with
"core/", the legacy (before merge) EFL components are prefixed with "legacy/",
and pet dev projects are prefixed with "devs/DEV-NAME/".
Our repositories are not small and carry years of development.
There are currently over 1.5 million lines of C source code alone in them.
Along with some other languages.
To clone the repositories you will have to get GIT
A full local checkout will use about 1.2 GB of local disk
space. To check it out you will need <a
href=http://subversion.tigris.org/>subversion</a>. Most Linux
distributions come with packages for them. For other operating
href=http://git-scm.com/>GIT</a>. Most Linux
distributions come with packages for it; for other operating
systems your luck may vary. There is <a
href=http://tortoisesvn.tigris.org/>Tortoise SVN</a> for windows,
and OSX users can just use regular subversion like their Linux
counterparts. To check out all of SVN just use:
href=http://msysgit.github.com/>msysgit</a> for windows,
and OSX users can just use regular GIT like their Linux
counterparts. To clone a git repository you need to do (for example for the EFL repo):
</p>
<p><pre><code>svn co http://svn.enlightenment.org/svn/e
<p><pre><code>git clone git://git.enlightenment.org/core/efl.git
</code></pre></p>
<p>
<em>(You can also use https instead of http if you want to use SSL
encryption)</em>
</p>
<p>
You can also use git if you want to maintain lots of
local branches, code and features and generate patches and so on. You
can either use git-svn:
</p>
<p><pre><code>git svn clone http://svn.enlightenment.org/svn/e
</code></pre></p>
<p>
If you are not interested in keeping the history (or only really need the
last couple commits as individual commits you can use the -r option git-svn
provides. Additionally you most likely don't need stuff in the directories
BROKEN/ or OLD/. These can be ignored with the option --ignore-paths so the
command to check out only the latest revision would be:
</p>
<p><pre><code>git svn clone --ignore-paths="BROKEN|OLD" -r HEAD http://svn.enlightenment.org/svn/e
</code></pre></p>
<p>
Or alternatively use the French git mirror from <a href=http://git.enlightenment.fr/>here</a>. This is preferred as native git is faster and better than git-svn.
Full links are easily guessable (just the repo name), but are also available
from the <a href=http://git.enlightenment.org>online repository browser</a> linked to above.
<em>(It's recommended you use the git protocol, but you can use the http
protocol if you prefer; developers should use ssh)</em>
</p>
<p>
To update the code in your tree (pull in changes from our master
tree), just use:
</p>
<p><pre><code>svn update
</code></pre></p>
<p>
Or for git-svn:
</p>
<p><pre><code>git svn rebase
</code></pre></p>
<p>
Or for git:
tree), just run:
</p>
<p><pre><code>git pull --rebase
</code></pre></p>
<p>
If you have made changes you'd like to share, you can generate a patch
file from your changes with:
In order to generate patches
</p>
<p><pre><code>svn diff -x -up
<p><pre><code>git format-patch LAST-COMMIT-BEFORE-YOURS # read the manual
</code></pre></p>
<p>
Or with git:
</p>
<p><pre><code>git diff # Or better yet, git format-patch - read the manual.
</code></pre></p>
<p>
Please read the appropriate manuals for your chosen revisioning
system so you know how to use it effectively.
Please read more about git so you'll be able to unleash it's full power.
We use phabricator for patch reviews, ticket management, wiki and etc. This
means we use "arcanist" for patch submissions. More info is available
at the relevant <a href=https://phab.enlightenment.org/w/arcanist/>phabricator wiki page</a>.
</p>
<hr>
<p>
Once you become an enlightenment developer, you will possibly get SVN
commit access. This means you can not just fetch the code and generate
patches, but you can also directly put changes into SVN (commit them).
All changes are watched and broadcast on our
<a href=https://lists.sourceforge.net/lists/listinfo/enlightenment-svn>
SVN Commits List</a> as they happen. To gain a copy of the tree as a
developer with commit access you will want to check out the tree with
one of the following commands (depending on if you want to use SVN
directly, or SVN via git), where <b>USER</b> is your assigned username:
</p>
<p><pre><code>svn co svn+ssh://USER@svn.enlightenment.org/var/svn/e
</code></pre></p>
<p><pre><code>git svn clone svn+ssh://USER@svn.enlightenment.org/var/svn/e/trunk/evas
</code></pre></p>
<p>
If you don't care about ancient revisions you can use the -r option for
git-svn here as well as it does not prevent you from being able to commit.
</p>
<p>
Our SVN tree is divided up and categorized. The <b>trunk</b>
directory is where all the main development happens. Inside this
directory most maintained source lives in the base. We divided off
bindings for other languages off into the <b>BINDINGS</b> directory.
The <b>E-MODULES-EXTRA</b> contains a whole bunch of modules for
enlightenment that may or may not work - try at your own risk.
<b>PROTO</b> contains prototype applications.
We could go on telling you about the tree, but it's best to
just look around and see. Just keep in mind that this tree is our
"workshop" and parts of it may be in better condition than others and
may or may not be usable. If you look here it is assumed you have a
good technical grasp on things and can work out what is and isn't
relevant or being worked on or going to be released any time soon.
Once you become an enlightenment developer, you will possibly get commit
access. This means you'll be able to push commits into the branches, and
create your own development branches. All changes are broadcast to our
<a href=https://lists.sourceforge.net/lists/listinfo/enlightenment-git>
GIT Commits Mailing List</a> as they happen.
In order to give yourself the ability to do all of these, i.e use your commit
access, you'll have to modify your git remote. You do that by running:
<p><pre><code>git remote set-url git+ssh://git@git.enlightenment.org/core/efl.git</code></pre></p>
If by some crazy turn of events we gave you access without you having a clone
in the first place, or alternatively you are doing a new clone for whatever
reason, you can just clone the git+ssh path directly.
<em>Important: Do not change the "git" username at the beginning of the command, that's correct.</em>
</p>
</div>