= Subversion Repository = Boost uses [http://subversion.tigris.org/ Subversion] to manage all of the data associated with Boost's development, including the source code to Boost, documentation for Boost libraries, and the Boost web site. == Accessing the Boost Subversion Repository == The Subversion repository can be accessed in several ways: * Anonymous, read-only access to the Boost Subversion repository is available at http://svn.boost.org/svn/boost. To access the current Boost development code, for instance, one would check out from http://svn.boost.org/svn/boost/trunk. For example, using the command-line `svn`, one might use: svn co http://svn.boost.org/svn/boost/trunk boost-trunk * Developer (read/write) access to the Boost Subversion repository is available for Boost contributors at https://svn.boost.org/svn/boost. To access the current Boost development code, for instance, one would check out from https://svn.boost.org/svn/boost/trunk. For example, using the command-line `svn`, one might use: svn co https://svn.boost.org/svn/boost/trunk boost-trunk For information about gaining developer access to the Boost Subversion repository, see below. * The Subversion repository can be browsed online at http://svn.boost.org/svn/boost/. * On Windows, [http://tortoisesvn.tigris.org/ TortoiseSVN] provides an easy-to-use, graphical interface to Subversion. == Organization of the Boost Subversion Repository == The Boost Subversion repository is organized into several top-level directories, reflecting various stages of Boost library development and subtasks within the Boost community. We have the following top-level directories: * `trunk`: Contains the latest "development" version of Boost. * `sandbox`: Contains libraries and tools that are under active development and have not yet been reviewed or accepted into Boost. See BoostSandbox for information about organization of the sandbox. * `website`: Contains the upcoming Boost web site, which is not yet live. * `branches`: Contains various branches of Boost libraries, typically for release branches and for non-trivial changes to Boost libraries that need to be made separately from the trunk. * `tags`: Contains "tags" that mark certain points in the source tree, such as particular Boost releases. == Developer Access to Subversion == Boost contributors are given read/write access to the Boost Subversion repository when their Boost tasks warrant. There are three different areas of the Boost Subversion repository that contributors may need access to: * The main Boost development areas, particularly the `trunk` directory tree. This level of access is typically restricted to authors and maintainers of Boost libraries. * The `sandbox` area, which is used to develop new libraries and tools that have not yet come up for Boost review. This level of access is available to contributors who want to develop future Boost libraries and collaborate with other Boost contributors. * The web site, which stores the Boost web site. To gain developer access to the Boost Subversion repository, please send a email to the [http://www.boost.org/more/moderators.html Boost Moderators] at `boost-owner -at- lists.boost.org` stating why you need write access to the Boost Subversion repository, and which parts of the repository--boost itself, the sandbox, or the web site--you need access to. If you had access to Boost CVS when it was hosted at !SourceForge, please provide your !SourceForge user ID. Once a moderator has approved you for access to the Subversion repository, you will receive an invitation via e-mail that asks you to provide a user name and a password, which will be used to access both the Boost Subversion repository and the Boost Trac. You will also be asked to grant permission for your past and future Boost contributions to be licensed under the [http://www.boost.org/more/license_info.html Boost Software License] version 1.0 and future versions: your permission is required to work with the Boost Subversion repository, so that we can ensure that Boost code is licensed under the Boost Software License. Please be sure to read the section on MIME types and end-of-line styles, below, and adjust your Subversion configuration as necessary. Once you have write access to Subversion, you may want to "upgrade" your anonymous checkouts to developer checkouts. You can do so with the [http://svnbook.red-bean.com/en/1.0/re27.html svn switch] command, run from your Subversion checkout: svn switch --relocate http://svn.boost.org/svn/boost https://svn.boost.org/svn/boost --username ''your-username'' Alternatively, to get a fresh check out: svn co https://svn.boost.org/svn/boost/trunk boost-trunk --username ''your-username'' == MIME Types and End-Of-Line Styles == By default, Subversion treats all files as binary. Thus, a text file checked into Subversion with Unix line endings would retain those Unix line endings even when checked out on a Windows or Mac machine. A text file edited on several machines using different platforms would likely end up with inconsistent line endings, causing problems with various development tools. To address this problem, Boost adopts an approach using [http://svnbook.red-bean.com/en/1.1/ch07s02.html `svn:eol-style` properties] to provide native line endings for users on all platforms. Each text file in the Boost Subversion repository must have its MIME type set appropriately. For each file with a "text/" MIME type, the file must also have the `svn:eol-style` property set to `native`. When the`svn:eol-style` is `native`, the Subversion server stores the file using Unix line endings, but the Subversion client will translate between the server's end-of-line format and the client's native end-of-line format. These settings will be verified by the Subversion repository itself, to keep the repository consistent. Specifically, the Subversion repository will reject commits that contain any files without the `svn:mime-type` property set or any text files without the `svn:eol-style` property set. To automatically maintain correct MIME types and end-of-line styles, you will need to modify your Subversion configuration to use the "auto-props" feature. When you edit your Subversion configuration, remove the existing {{{enable-auto-props = no}}} setting, if it exists, and then add the following text to enable Subversion's auto-properties. The location of the Subversion configuration differs from one platform to the next: * On Unix: Edit the file {{{~/.subversion/config}}}. * With the command-line Subversion on Windows: Edit the file {{{%APPDATA%\Subversion\config}}}. * With [http://tortoisesvn.tigris.org/ TortoiseSVN] on Windows: Right-click in Windows Explorer to bring up the context menu, and select !TortoiseSVN->Settings. In the "General" configuration tab, click the Edit button to the right of "Subversion configuration file". Now, paste the contents below into that editor window and save the results. '''Note''': If !TortoiseSVN loads Notepad to edit your configuration file, it will save it as {{{config.txt}}}, rather than {{{config}}}. You will need to navigate to {{{%APPDATA%\Subversion\}}} and rename {{{config.txt}}} to {{{config}}}. Otherwise, auto-properties will not work. Alternately, use the Notepad "Save As" dialog on the file menu, changing the "Save as type" to "All Files", and adding a period after the "config" File name. Then click the "Save" button. {{{ [miscellany] enable-auto-props = yes [auto-props] # Scriptish formats *.bat = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.bsh = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/x-beanshell *.cgi = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.cmd = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.js = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/javascript *.php = svn:eol-style=native; svn:keywords=Id Rev Date; svn:mime-type=text/x-php *.pl = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/x-perl; svn:executable *.pm = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/x-perl *.py = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/x-python; svn:executable *.sh = svn:eol-style=LF; svn:keywords=Id; svn:mime-type=text/x-sh; svn:executable configure = svn:eol-style=LF; svn:keywords=Id; svn:mime-type=text/x-sh; svn:executable # Image formats *.bmp = svn:mime-type=image/bmp *.gif = svn:mime-type=image/gif *.ico = svn:mime-type=image/ico *.jpeg = svn:mime-type=image/jpeg *.jpg = svn:mime-type=image/jpeg *.png = svn:mime-type=image/png *.tif = svn:mime-type=image/tiff *.tiff = svn:mime-type=image/tiff *.svg = svn:eol-style=native; svn:mime-type=image/svg+xml # Data formats *.pdf = svn:mime-type=application/pdf *.avi = svn:mime-type=video/avi *.doc = svn:mime-type=application/msword *.dsp = svn:mime-type=text/plain;svn:eol-style=CRLF *.dsw = svn:mime-type=text/plain;svn:eol-style=CRLF *.eps = svn:mime-type=application/postscript *.gz = svn:mime-type=application/gzip *.mov = svn:mime-type=video/quicktime *.mp3 = svn:mime-type=audio/mpeg *.ppt = svn:mime-type=application/vnd.ms-powerpoint *.ps = svn:mime-type=application/postscript *.psd = svn:mime-type=application/photoshop *.rdf = svn:eol-style=native;svn:keywords=Id *.rss = svn:eol-style=native;svn:keywords=Id *.rtf = svn:mime-type=text/rtf *.sln = svn:eol-style=native;svn:mime-type=text/plain *.swf = svn:mime-type=application/x-shockwave-flash *.tgz = svn:mime-type=application/gzip *.vcproj = svn:eol-style=native;svn:mime-type=text/xml *.vcxproj = svn:eol-style=native;svn:mime-type=text/xml *.vsprops = svn:eol-style=native;svn:mime-type=text/xml *.wav = svn:mime-type=audio/wav *.xls = svn:mime-type=application/vnd.ms-excel *.zip = svn:mime-type=application/zip # Text formats .htaccess = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.bbk = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/xml *.cmake = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.css = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/css *.dtd = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/xml *.htm = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/html *.html = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/html *.ini = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.log = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.mak = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.qbk = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.rst = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.sql = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/x-sql *.txt = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.xhtml = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/xhtml+xml *.xml = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/xml *.xsd = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/xml *.xsl = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/xml *.xslt = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/xml *.xul = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/xul *.yml = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain boost-no-inspect = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain # tells boost inspect to ignore directory CHANGES = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain COPYING = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain INSTALL = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain Jamfile = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain Jamroot = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain Jamfile.v2 = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain Jamrules = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain Makefile* = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain README = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain TODO = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain # Code formats *.c = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.cpp = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.h = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.hpp = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.ipp = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.tpp = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.jam = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain *.java = svn:eol-style=native; svn:keywords=Id; svn:mime-type=text/plain }}} == Subversion Commit Messages == To receive e-mail each time a change is committed to the Boost Subversion repository, join the Boost-commit mailing list at http://lists.boost.org/mailman/listinfo.cgi/boost-commit