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
doc:git [2011/12/07 00:20]
frozenfire Formatting
doc:git [2020/09/03 01:18]
Line 3: Line 3:
 === Current Project Structure === === Current Project Structure ===
 +The Subversion repository for the PHP Documentation project is currently stored in the
 +[[|main PHP repository]] under [[|phpdoc]].
 +It is divided into two main subsections, and a number of active and inactive translations.
 == Main Subsections == == Main Subsections ==
Line 8: Line 11:
   - [[|Modules]]   - [[|Modules]]
     * [[|Doc-En]]     * [[|Doc-En]]
-        svn:externals 
-        doc-base 
-        en 
     * //[[|Others]]//     * //[[|Others]]//
Line 17: Line 16:
   - [[|Brazilian Portuguese]]   - [[|Brazilian Portuguese]]
   - [[|Chinese (simplified)]]   - [[|Chinese (simplified)]]
 +  - [[|English]]
   - [[|French]]   - [[|French]]
   - [[|German]]   - [[|German]]
Line 28: Line 28:
   - //[[|Other Inactive]]//   - //[[|Other Inactive]]//
 +== Properties ==
 +Modules are achieved using the Subversion property known as svn:externals. This prop allows external
 +Subversion paths to be linked into the project by URL.
 +''doc-en Module Example''
 +  doc-base
 +  en
 +Each xml file in the repository contains a set of keywords which are automatically substituted when
 +checked out. These allow certain terms to be automatically updated for each commit, rather than
 +maintained manually. Importantly, the Revision keyword allows translations to track what version
 +of the English translation their file is based upon.
 +''svn:keywords Example''
 +  Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
 +=== Proposed Git Structure ===
 +Because of a few technical limitations of the Git version control system, some major structural changes
 +are required for the transition to Git from Subversion. First and foremost, Git does not support
 +partial check-outs of a subsection of the repository.
 +Because of this, the project must be split into several independent repositories, and "wrapper"
 +repositories whose function is to define a set of submodules that make up each translation's project.
 +== Doc-Base ==
 +Since the doc-base path of the PHP Documentation project is a global dependency for all builds, it
 +makes up its own major project, which all wrapper repositories will include as a submodule.
 +== "Wrapper" Repositories ==
 +Each wrapper repository will include doc-base and its respective translation project as submodules.
 +''doc-en Wrapper Repository Example''
 +  git init phpdoc-en
 +  git submodule add git:// phpdoc-en/doc-base
 +  git submodule add git:// phpdoc-en/en
 +== Attributes ==
 +Because Git does not support keywords in the same way that Subversion does, some changes may need to be
 +made, or it may be necessary to create hackish dependencies in order to
 +[[|maintain the current scheme]].
 +''RCS Keywords Example''
 +  git clone git://
 +  git init phpdoc-en
 +  cat git-rcs-keywords/.gitconfig >> phpdoc-en/.git/config
 +  echo '*.xml filter=rcs-keywords' >> phpdoc-en/.gitattributes
 +  cp -R git-rcs-keywords/.git_filters phpdoc-en/
doc/git.txt · Last modified: 2020/09/03 01:18 by avenger