diff mbox series

wwwdocs: Document the gcc git repository layout

Message ID e5d884e5-8093-f7da-d365-af2d2dd7a426@arm.com
State New
Headers show
Series wwwdocs: Document the gcc git repository layout | expand

Commit Message

Richard Earnshaw (lists) Jan. 22, 2020, 3:42 p.m. UTC
The GCC git repository makes use of some non-standard refs so that by 
default only the most active and useful branches and tags are fetched by 
a git clone.  This patch documents the additional branch and tag spaces 
that exist on the server.

Joseph, have I got all of these right?

R.

Comments

Joseph Myers Jan. 22, 2020, 10:15 p.m. UTC | #1
On Wed, 22 Jan 2020, Richard Earnshaw (lists) wrote:

> Joseph, have I got all of these right?


refs/meta in that list should be refs/meta/config, there isn't anything 
else under refs/meta/ at present.

-- 
Joseph S. Myers
joseph@codesourcery.com
Richard Earnshaw (lists) Jan. 23, 2020, 11:07 a.m. UTC | #2
On 22/01/2020 22:15, Joseph Myers wrote:
> On Wed, 22 Jan 2020, Richard Earnshaw (lists) wrote:

> 

>> Joseph, have I got all of these right?

> 

> refs/meta in that list should be refs/meta/config, there isn't anything

> else under refs/meta/ at present.

> 


I've pushed this version...
diff --git a/htdocs/git.html b/htdocs/git.html
index 6100146e..66d68ebc 100644
--- a/htdocs/git.html
+++ b/htdocs/git.html
@@ -197,6 +197,61 @@ To create a worktree for a new project branch based on master, do
 git worktree add -b <em>project</em> ../project master
 </pre></blockquote>
 
+<h3 id="repolayout">Repository Layout</h3>
+
+<p>By default, a <code>git clone</code> operation will only fetch the
+main development, release branches and their associated tags from the
+server.  This will be sufficient for most users, but a number of
+additional branches can also be fetched if necessary.</p>
+
+<p>The following areas exist on the server:</p>
+<ul>
+  <li><i>refs/heads/master</i> - The active development version of the
+    compiler.</li>
+  <li><i>refs/heads/releases/*</i> - Release branches.</li>
+  <li><i>refs/heads/devel/*</i> - topic-specific development branches
+    - see <a href="#devbranches">Active Development Branches</a>.
+    Branches and tags in this space may be moved to refs/dead once active
+    development is completed or abandoned.</li>
+  <li><i>refs/tags/*</i> - tags for all of the above branches.</li>
+  <li><i>refs/vendors/*/{heads,tags}/*</i> - vendor-specific branches and
+    tags.  These are owned and maintained by the respective
+    vendor, but made available publicly.  Non-fast-forward pushes
+    are permitted on these branches.</li>
+  <li><i>refs/users/*/{heads,tags}/*</i> - personal developer branches and
+    tags.  These are owned and maintained by the individual developer.
+    Non-fast-forward pushes are permitted on these branches.</li>
+  <li><i>refs/dead/heads/*</i> - completed or abandoned development
+    branches.</li>
+  <li><i>refs/meta/config</i> - local configuration data for the
+    commit hooks on the server.</li>
+  <li><i>refs/deleted/*/{heads,tags}/*</i> - old branches and tags
+    from the SVN repository that were deleted before the conversion to
+    git.</li>
+  <li><i>refs/git-svn-old/*</i> - various branches and tags from the
+    git-svn pre-conversion git mirror.</li>
+  <li><i>refs/git-old/*</i> - various branches and tags from the
+    git-svn pre-conversion git mirror that were local to that git
+    repository.</li>
+</ul>
+
+<p>You can download any of the additional branches by adding a suitable
+fetch specification to your local copy of the git repostiory.  For
+example, if your remote is called 'origin' (the default with git
+clone) you can add the 'dead' development branches by running:</p>
+
+<blockquote><pre>
+    git config --add remote.origin.fetch "+refs/dead/heads/*:refs/remotes/origin/dead/*"
+    git config --add remote.origin.fetch "+refs/dead/tags/*:refs/tags/dead/*"
+    git fetch origin
+</pre></blockquote>
+
+<p>which will place the dead branches in <code>remotes/origin/dead</code>
+  and the tags in <code>tags/dead</code>.</p>
+
+<p>You can use <code>git ls-remote</code> to get a complete list of
+refs that the server holds.</p>
+
 <h3 id="devbranches">Active Development Branches</h3>
 
 <ul>
diff mbox series

Patch

diff --git a/htdocs/git.html b/htdocs/git.html
index 6100146e..6d3778af 100644
--- a/htdocs/git.html
+++ b/htdocs/git.html
@@ -197,6 +197,61 @@  To create a worktree for a new project branch based on master, do
 git worktree add -b <em>project</em> ../project master
 </pre></blockquote>
 
+<h3 id="repolayout">Repository Layout</h3>
+
+<p>By default, a <code>git clone</code> operation will only fetch the
+main development, release branches and their associated tags from the
+server.  This will be sufficient for most users, but a number of
+additional branches can also be fetched if necessary.</p>
+
+<p>The following areas exist on the server:</p>
+<ul>
+  <li><i>refs/heads/master</i> - The active development version of the
+    compiler.</li>
+  <li><i>refs/heads/releases/*</i> - Release branches.</li>
+  <li><i>refs/heads/devel/*</i> - topic-specific development branches
+    - see <a href="#devbranches">Active Development Branches</a>.
+    Branches and tags in this space may be moved to refs/dead once active
+    development is completed or abandoned.</li>
+  <li><i>refs/tags/*</i> - tags for all of the above branches.</li>
+  <li><i>refs/vendors/*/{heads,tags}/*</i> - vendor-specific branches and
+    tags.  These are owned and maintained by the respective
+    vendor, but made available publicly.  Non-fast-forward pushes
+    are permitted on these branches.</li>
+  <li><i>refs/users/*/{heads,tags}/*</i> - personal developer branches and
+    tags.  These are owned and maintained by the individual developer.
+    Non-fast-forward pushes are permitted on these branches.</li>
+  <li><i>refs/dead/heads/*</i> - completed or abandoned development
+    branches.</li>
+  <li><i>refs/meta</i> - local configuration data for the commit hooks
+    on the server.</li>
+  <li><i>refs/deleted/*/{heads,tags}/*</i> - old branches and tags
+    from the SVN repository that were deleted before the conversion to
+    git.</li>
+  <li><i>refs/git-svn-old/*</i> - various branches and tags from the
+    git-svn pre-conversion git mirror.</li>
+  <li><i>refs/git-old/*</i> - various branches and tags from the
+    git-svn pre-conversion git mirror that were local to that git
+    repository.</li>
+</ul>
+
+<p>You can download any of the additional branches by adding a suitable
+fetch specification to your local copy of the git repostiory.  For
+example, if your remote is called 'origin' (the default with git
+clone) you can add the 'dead' development branches by running:</p>
+
+<blockquote><pre>
+    git config --add remote.origin.fetch "+refs/dead/heads/*:refs/remotes/origin/dead/*"
+    git config --add remote.origin.fetch "+refs/dead/tags/*:refs/tags/dead/*"
+    git fetch origin
+</pre></blockquote>
+
+<p>which will place the dead branches in <code>remotes/origin/dead</code>
+  and the tags in <code>tags/dead</code>.</p>
+
+<p>You can use <code>git ls-remote</code> to get a complete list of
+refs that the server holds.</p>
+
 <h3 id="devbranches">Active Development Branches</h3>
 
 <ul>