====== Subversion ====== \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t ---- __**Advertencia**__ Este documento es privado y es de uso exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal. ---- ===== Descripción ===== \\ ===== Prerequistos ===== ===== Procedimiento ===== ===== A. Instalación básica ===== \\ ===== B. Configuración ===== \\ === 1. Una accion === \\ === 2. Segunda accion === \\ ===== Problemas ===== ==== 1. Si el instale_mrtg.sh no le funciona ==== - ===== Referencias ===== - FIN ============================================================== ============================================================== | **Page 1**| ****Subversion** **HOWTO**** Software Development Group CLLRnet 2004-09-09 This document will help the understand what **subversion** is and how to use **subversion** for their own projects. **Table of Contents** [[#1|Introduction]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#1|1]] [[#1|Copyright and License]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#1|1]] [[#1|Disclaimer]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#1|1]] [[#1|What Is SVN]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#1|1]] [[#2|Where To Download SVN]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#2|2]] [[#2|Key Features]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#2|2]] [[#3|A Simple **Subversion** Tutorial]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#3|3]] [[#3|Configuring **Subversion** for Multiple developers]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#3|3]] [[#4|Sample **subversion** commands]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#4|4]] [[#4|Checking out a file]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#4|4]] [[#4|Finding the difference between two files]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#4|4]] [[#4|Uploading Changes To Your Repository]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#4|4]] [[#4|Updating Your Working Copy]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#4|4]] [[#5|Checking Status Of Files]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#5|5]] [[#5|Other Commans]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#5|5]] [[#5|A. Useful Web Sites]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [[#5|5]] **Introduction** This document will introduce **Subversion** repository system and why should you use it. Give a sample project and walk the reader throught it. We will also show the reader how to create a repository were many users can access it, for project with multiple developers. **Copyright and License** Copyright (c) 2003, 2004 Eric Meyerhoff. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts A copy of the license is included in the section entitled "GNU Free Documentation License" **Disclaimer** No liability for the contents of this document can be accepted. Use the concepts, examples and information at your own risk. There may be errors and inaccuracies, that could be damaging to your system. Proceed with caution, and although it is highly unlikely that accidents will happen because of following advice or procedures described in this document, the author(s) take no responsibility for damage claimed to be caused by doing so. All copyrights are held by their respective owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark. Naming of particular products or brands should not be seen as endorsements. No liability for the contents of this document can be accepted. 1 ---- | **Page 2**| **Subversion** **HOWTO** **What Is SVN** SVN is the project name for **subversion** which was developed to replace the Concurrent Version System CVS. For those people who are less familiar with CVS, CVSis a "//source control//" or "//revision control//" tool designed to keep track of source changes made by groups of developers working on the same files, allowing them to stay in sync with each other as each individual chooses. The great thing about SVN though is that it has all the same functionality as CVS, but SVN is designed to be more like a file system rather than a simple revision control. **Where To Download SVN** The main website for **subversion** is at h[[http://url%28http://subversion.tigris.org%29|ttp:%%//%%**subversion**.tigris.org]] [http:%%//%%**subversion**.tigris.org] and a great book called [[http://url%28http://svnbook.red-bean.com%29|Version Control with **Subversion**]] [http:%%//%%svnbook.red-bean.com] can be read online. **Subversion** have three very good software application that you can use. • A basic text based interface • A graphical interface that is embedded into your file explorer. ( [[http://url%28http://tortoisesvn.tigris.org%29|TortoiseSVN [h]]ttp:%%//%%tortoisesvn.tigris.org]) • Another graphical interface, but this application is can be used on many Operating Systems [[http://url%28http://rapidsvn.tigris.org%29|(RapidSVN]] [http:%%//%%rapidsvn.tigris.org]) **Key Features** • support most current CVS features • directories, renames, and file metadata are versioned • commits are atomic • Three type of server option. • WebDAV/ with DeltaV protocol • Stand alone svn server • Using ssh to tunnel svn connection to server • branching and tagging are constant time operations • client/server protocol sends diffs in both directions • time complexity of operation is proportional to the change not the data size • efficent handling of binary files • parseble output 2 ---- | **Page 3**| **Subversion** **HOWTO** **A Simple **Subversion** Tutorial** **Example 1. Creating a Repository** **Subversion** stores all versioned data in a control repository to begin, create a new reposity. # mkdir svnroot # svnadmin create svnroot/project_name This command creates a new directory svnroot/project_name which contains a **subversion** repository. //Never// //edit this directory manually// **Example 2. Creating your Work Space** A common practice for a working tree look like this: project_dir +-- branches | +-- modules | +-- trunk • The trunk directory is were you will do most of your work. This directory should contain all you uptodate working copy of each file needed for the project. • The branches directory is a copy of the trunk directory but only at a point were you would build a release of your project. • The modules directory is where you would devide your project into seperate modules... (plugins) each plugins would have it’s own (branches/trunk) directories. **Configuring **Subversion** for Multiple developers** In order to let other user use your repository. The permission on the root repository directory and all the files in the root repository of your project will have to give access to all developers of that project. Add a group to your linux server and call this group the same name as your project. Add all developer of this project to that group. Then change the group of each directory and files in your project repository to that group. chown root.group_name svnroot/project_name Then you will need to change the access bit on all the files and directory in your project’s repository. 3 ---- | **Page 4**| **Subversion** **HOWTO** chmod g+wS svnroot/project_name When a developer uses svn localy, he must make sure that he as **umask 022** set. When using using SVN with ssh. You should create a wrapper script so that when **svnserver** is call it set the umask 022 prior. Here is a sample svnserver script. #!/sbin/sh umask 022 /usr/bin/svnserver $* **Sample **subversion** commands** **Checking out a file** # svn co svn+ssh:%%//%%user@server.com/svnroot/project_name This command get every file in your repository and store them on your local drive, creating yourself your own working copy of the project. Once you have your own working copy of the project. You can start editing any file you want. **Finding the difference between two files** # svn diff filename The command allows you to see the unified difference between the file in your working copy and the file in the repository. **Uploading Changes To Your Repository** # svn ci # svn ci filename The checkin command is used when you want to send your changes that you have made to your working copy to your repository. //No mather what command or file you edit, Your reposity will not have been changed unless you execute// //this command.// **Updating Your Working Copy** If you work on a project with multiple developer, on occassion you will have to merge or update your working copy with their code that they have summited to the repository. # svn up 4 ---- | **Page 5**| **Subversion** **HOWTO** the update command will try to merge all changes into your working copy. Sometime this is not posible and **subversion** will let you know by creating a file showing you the difference between the two files. When preforming a update **subversion** displays a status of each file it update. **Checking Status Of Files** If you want to know what files has been changed in your working copy the status command will tell you. # svn status This will show you a list of all your files in your working copy with a character indicating the status of this file. To a list of all status characters goto [[http://url%28http://svnbook.red-bean.com/svnbook/book.html#svn-ch3-sect-4.3.1%29|Section 4.3.1 of the **Subversion** book []]http:%%//%%svnbook.red- bean.com/svnbook/book.html#svn-ch3-sect-4.3.1] **Other Commans** For other svn commands go to: [[http://url%28http://svnbook.red-bean.com/svnbook/book.html%29|http:%%//%%svnbook.red-bean.com/svnbook/book.html]] [http:%%//%%svnbook.red- bean.com/svnbook/book.html] or use the help system. # svn help # svn help add **A. Useful Web Sites** These Web sites may be useful in getting more information on **Subversion**: • [[http://url%28http://subversion.tigris.org%29|**Subversion** Official Web Site (**subversion**.tigris.org) []]http:%%//%%**subversion**.tigris.org] • [[http://url%28http://rapidsvn.tigris.org%29|RapidSVN Web Site (rapidsvn.tigris.org) [h]]ttp:%%//%%rapidsvn.tigris.org] • [[http://url%28http://tortoisesvn.tigris.org/%29|TortoiseSVN Web Site (tortoisesvn.tigris.org) [h]]ttp:%%//%%tortoisesvn.tigris.org/] 5 ==============================================================   15-Marzo-2006 J.E.Gomez v1.0 Primera version\\ \\ \\ \t\t\t \t\t\t