CVS
tifa hentai video original uncut video of beheading nick b ddg videoclip gratuiti porno tera patrick videos ambrose video publishing inc. lina sybian movie the complete james bond movie encyclopedia bruni video sakis video poprno video scott wolf video on demand autobahn video video camera surveillance in schools black pussy movie hp videoproiettore video de dido leveret canalis video backstage videos decapitazioni latinas movies and galleries video chat incontri paris hilton videos parts of the ear christian video production geil video umsonst anschauen porno history of home video game console video-flash veronica black video video don omar video clip deutsch panzer sickle cell anemia video videocitofono con antifurto 3 claus movie santa aebn free hand job video uv air purifier video donne che si masturbano jasmine wang pussy movies abbonamenti accessori audio video video mature gratis 2gether the original movie videos de musica en espanol medical equipment sale telecamere videosorveglianza video mezz ora zeroassoluto cartoon horses motorweek sex underage videos video lesbo gratuiti firefox movie stephenville tx video lesbici gratis bambola nude video jvc videocamere rc truck video clip televideo telenorba red bottom shoes video nudiste nicholas berg execution video fire safety education video la mesa que mas aplauda moviebox dv video shemale videocamera dcr pc55 lovehammers ultrasound video porni sapphire video driver hotmovies.com vod.com rental video projectors edinburgh trish stratus wet and wild video video esibizioni www.girl movies 10 time top video viral hairline transplant repairs video mario winans asian chat teen video xxx videosdiarios video authoring and dvd replication grave ronnie van zant videocamere canon mv800 webcam videocamere holes the movie audio video cable 2009 dodge ram new orleans aquarium st. andrews golf picture craps tables kits movie quest vision eluxury my space video clips scheda video uscita tv video remote interpreting british beer company video di cameron diaz movie next star trek advance movie adapter videos de pesca ai nagase videos avk daniela sea free amateur video 69 music summer video abba knowing me knowing you video video musical de kalimba pompini video trasmettitore-ricevitore audio video matura video jay-z. streets is watching. the movie mp3 video player kaufen gianluca grignani video di speciale video porno credit card george m cohan televideo telenorba cohf movies assassin movie video gratis scopate videoannunci amatoriali auto racing crash videos mature video tgp home maui sale old school movie xxx video women orgasms portable batting cages s-video scart cavo di connessione video medical video production magnolia video video jerry rivera michele vieth video video decapitazioni in iraq in knockouts movie reel violent woman reno 911 video clip video asia argento fantasma dell opera gameboy advance videogiochi video tati albero college video video alta ris change management consultant free ebony girl video hipo rave video african american stereotype amateur teen home video sex kenneth bingley video logitech pocket video lettore mp3 con video pic rating site black teenager nude 90s horror movie video marco masini tiziano ferro video ti voglio bene francine video dei goal di del piero video masturbazioni maschili video cecenia video matura cartoon sex video decapitare video mls austin texas nuovi video musicali musica e video clip video del soldato decapitato shoreline movie mountain view ca video esecuzione ostaggi bbc world news testo e video di sara perche ti amo women in rap videos hanson video coolpix 4600 accessori nikon audio video new miami vice movie dvd- videoregistratore video sexi gratis keith m maupin video videocassetta 180 chobits wallpaper adult movie web spring break movie video door brad pitt latest movie dipendenza videogioco free video clip hard shakira tu video gang bang video anteprima video editing guide where the boy arent video video sexo com loraine video drammatici fischer video xm2 videocamere canon terroristi video chuck e cheeses batterie toshiba per foto e video masturbating melissa midwest video video editting software free video della decapitazione dell ostaggio max liron bratman vegetable gardening tips war videos band good charlotte queen of sheba the leaky cauldron multnomah county library male erection picture lagu artis indonesia history of wicca dyson vacuum cleaner good sams club 360 backwards box compatibility list x fatal frame park city hotel audio file shoking photos sundance boats baltimore in maryland zoo anime new order waiting for the sirens call tracklist schwinn bicycle part japanese maple trees punx unite mp3 goodbye quotes uss missouri replica eheim ecco 2231 naughty people eminem without me lyric maryanne nubiles juliet lewis refurbished ipods tiny titties schoolgirl thumbnail galleries portable dance floor aromatherapy oil perfume niji yahoo picture gallery car eps graco seat snugride corporate social responsibility oconee memorial park leg lymphedema baby name ten top money tree plant care nicole richie diet we fest unlock motorola v3 for free sterling silver jewelry 17 mig outdoor baby swing mobile suit gundam seed nintendo ds ncesc.com meningitis dennis kucinich psychology jobs electronic health records software most expensive car in the world help in reading knock on wood extensis photoframe crack mineral pre-mix council apakah itu tsunami cheek her spread business home internet marketing opportunity dating services california ramada hotel pudong howard stern ex wife hp 57 google.com free nude video woman wrestling fighting fire woodland park real estate sand dollar marine celtic irish mythology volkswagen parts online gays in the military frozen aguilera christina hurt respironics spot welder long video cables janet jackson weight loss interview nastia liukin picture tape tanger outlet concrete floor sealant https atlanta georgia cash register sales director chairs seafood cold cases italian leather dining room chairs symbolic meaning of flowers honda sissy bar microsoft picture it boot pointed toe tying a tie rog reviews touch screen welcome back kotter luciana paluzzi silver springs florida twins kissing extreme atv video j. crew copeland sports make money online work at home opportunity midi to mp3 beat box lightyear alliance coloradoavalanche.com dumpster slut how to make bows silk screening equipment wisconsin unemployment cart cream ice vending particle count cd corporate est ethics finance finance finance hill in in insurance irwin mcgraw poors powerweb principle real series standard student nude men.com jkii mods wyoming incorporations fact about king cobras brook hunter kelsey grammar free online casino game cover wheel poem summer time astm grease working machine kenwood radio programming software g string girls city evil lyric helicopter dust as hair inhibitor milk soy string theory equations vera drake movie hospital michigan oakwood american girls hilton chicago ocean life kitchen planning baker furniture gay torrent nbc las vegas tv show grand bay hotel mauritius discount travel packages moisture chambers takagism history warehouse storage picture of gential herpes limos arizona da brat oops bravo george washinton humble anti aging natural supplement online reservation performance reston relocation pamela anderson gallery 2nd swing golf store night club lighting story brother sister bedroom pirate 4x4 mercedes sonoma county realtors domestic cat breed heavily scented candle pocket dragon figurine school library furniture educational toys and games husqvarna motorcycles buying long term care insurance odor cleaner free cell one ringtone cheap computer laptop sale used 2005 mustang saleen us customs regulations 773n call distance free long bariatric surgery support group stone fireplace mantel facade tarot reading texas mustangs soccer club cedar gazebo free get well cards humanoids deep black gorgeous man estate real ri warwick pickin wild flowers 10 bo derek dale earnhardt jr girlfriend climbing ratings gazelle boy problem teenage mp3 music superman theme automotive radiator add boas feather link sterling alphabet bead mc sporting goods michigan www.yell.com lawn mower blades allmusic.com in vitro impact usajobs.gov
El Sistema de Control de Versiones (CVS) permite que varios programadores trabajen de forma colaborativa en un mismo proyecto llevando un control de las versiones de los ficheros. De esta forma se permiten cambios concurrentes en un mismo fichero sin perder lo cambios realizados. Si usas o quieres usar esta herramienta se recomienda que pruebes CVSTrac.
Instalación
El programa viene en el paquete cvs que podemos instalar los repositorios oficiales de Ubuntu.
Configuración de un repositorio
Vamos a tener cada proyecto en un repositorio separado, que es lo suyo para tener un control más fino sobre cada uno de los distintos repositorios. Es mejor asàpor el tema de usuarios, permisos y configuraciones varias. Todos estos repositorios los vamos a crear dentro del directorio /var/lib/repositorio/, por ejemplo, para tenerlos juntos y facilitar el tema de la copia de seguridad.
Como buena práctica es aconsejable tener un usuario cvs que será el propietario de los ficheros:
$ adduser cvs $ chown cvs:cvs -R /var/lib/repositorio
Una vez declaradas estas premisas procedemos a la inicialización del repositorio que albergará un hipotético llamado tuxitron. Estas tareas de instalación las haremos como root:
$ cvs -d /var/lib/repositorio/tuxitron init
Para que todos los usuarios del grupo cvs tengan permisos para trabajar con el repositorio, hacemos que todos los ficheros del recién creado repositorio pertenezcan a ese grupo:
$ chgrp cvs /var/lib/repositorio/tuxitron -R
Ahora le tenemos que indicar al CVS que puede disponer del nuevo repositorio. Si usamos el superdemonio xinetd tendremos que crear el fichero:
$ gedit /etc/xinetd.d/cvs
y añadir el nuevo repositorio:
--allow-root=/var/lib/repositorio/tuxitron
Al final debe quedar una cosa asÃÂ:
service cvspserver { socket_type = stream protocol = tcp user = root group = cvs server = /usr/bin/cvs server_args = -f --allow-root=/var/lib/repositorio/perico --allow-root=/var/lib/repositorio/tuxitron pserver wait = no disable = no }
Y reiniciamos el superservidor para que los cambios surtan efecto:
$ /etc/init.d/xinetd reload
Personalización del repositorio
Antes de empezar a poner código en el repositorio hay algunas cosas por hacer que nos facilitarán luego el proceso de desarrollo. En el repositorio que acabamos de crear existe un directorio CVSROOT que contiene ficheros de carácter administrativo, esto es, que nos permiten personalizar el comportamiento del CVS. Veamos algunos de ellos para el caso de programar en Java:
- cvsignore: Indica patrones de ficheros a ignorar por el CVS. Estos ficheros no se podrán añadir al repositorio. Ejemplo:
*.class *.war *.ear
- cvswrappers: Especifica cómo serán gestionados determinados ficheros. Sirve para indicar qué ficheros son binarios. Ejemplo:
*.gif -k 'b' *.jpg -k 'b' *.png -k 'b' *.jar -k 'b' *.swf -k 'b'
- writers: Listado de usuarios que tienen permisos de escritura en el repositorio. Ejemplo:
fulanito menganito zutanito
- passwd: Nombre de los usuarios junto con sus correspondientes passwords. Cada lÃÂnea está compuesta de nombre del usuario, password codificado y correspondencia con usuario local. Ejemplo:
fulanito:********:cvs menganito:*********:cvs zutanito:*********:cvs
Para encriptar los passwords puedes usar este programa en Perl, al que le pasas el password en plano como parámetro y lo devuelve convenientemente codificado:
<perl>
#!/usr/bin/perl srand (time()); my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))"; my $salt = sprintf ("%c%c", eval $randletter, eval $randletter); my $plaintext = shift; my $crypttext = crypt ($plaintext, $salt); print "${crypttext}\n";
</perl>
Estos ficheros no se editan directamente en el repositorio, a excepción del passwd por motivos de seguridad, sino que deberemos hacer un checkout del directorio CVSROOT del repositorio para modificarlos y luego el commit correspondiente. Los ficheros cvsignore y writers tendrás que crearlos y añadirlos al repositorio.
Añadir un proyecto al repositorio
Una vez tengamos creado el repositorio tenemos que crear un proyecto. En los proyectos simples habrá un sólo proyecto por repositorio, pero en los más complejos puede haber varios proyectos relacionados en un mismo repositorio. En GNOME, por ejemplo, hay un repositorio y cada uno de los componentes de GNOME es un proyecto (Evolution, Nautilus, Evince, etc.).
Lo que haremos en importar lo que tenemos creando un proyecto en el repositorio, de esta forma pondremos disponible el código para que otra gente se pueda incluir en el proceso de desarrollo. Se usa el comando import del CVS. Es importante ejecutar este comando desde el directorio donde tengamos las fuentes para importar. También es fundamental establecer la variable de entorno CVSROOT que le indicará al cliente CVS donde está el repositorio.
$ export CVSROOT=/var/lib/repositorio/tuxitron
La sintaxis del comando de importación es la siguiente:
$ cvs import -m "comentario" <proyecto> <etiqueta_vendedor> <etiqueta_version>
Los dos últimos parámetros tienen poca importancia, de modo que puedes sustituirlos por tu usuario y la palabra "inicio" mismo. Por ejemplo, si eres el usuario monkiki y el proyecto a importar se llama tuxitron la lÃÂnea de comandos serÃÂa:
$ cvs import -m "Importación inicial" tuxitron monkiki inicio
Si vas a usar CVSTrac en lugar de importar todo el proyecto, importa un directorio vacÃÂo o uno que contenga un fichero de texto sin importancia (del estilo de leeme.txt) y haz un commit del resto de los ficheros. Los ficheros importados no aparecen en el navegador web de CVS. |
Binarios importados sin '-kb'
Si accidentalmente añades un fichero binario sin la opción '-kb', puedes usar el comando cvs admin para arreglarlo. Por ejemplo:
$ cvs add -m "Imagen de prueba" imagen.gif $ cvs ci -m "Enviamos la imagen no marcada como binario" image.gif
Ahora vamos a decirle que es un fichero binario:
$ cvs admin -kb imagen.gif $ cvs update -A imagen.gif
Esto no pasarÃÂa si tuviéramos el fichero cvswrappers correctamente configurado |
Trabajar con CVS
La lÃÂnea de comandos admite gran cantidad de comandos y opciones. En la nomenclatura de CVS, los comandos son parámetros funcionales de CVS. En lugar de tener varios ejecutables, uno para hacer checkout, otro para checkin, otro para status... tiene uno sólo llamado cvs que admite todos estos modos de funcionamiento. Veamos los principales:
- checkout: Saca el fichero del repositorio y lo almacena localmente para poder trabajar con él.
- checkin: Una vez realizados los cambios, volcamos el fichero al repositorio donde estará disponible para el resto de desarrolladores.
- status: Indica el estado actual del fichero.
- log: Saca un listado con las revisiones del fichero.
Pero lo más normal es que uses alguno de los clientes gráficos que existen. Uno de los mejores, aunque no tenga buena apariencia, es TkCVS, el cual podemos instalar con el paquete tkcvs de los repositorios oficiales de Ubuntu.
Notificación de los commits
La configuración de un repositorio también está sujeta al versionado. Asàque para añadir la opción de notificación de correo de los commits tenemos que hacer un checkout del directorio especial CVSROOT.
$ cvs co CVSROOT
Dentro de ese directorio hay unos cuantos ficheros. El que nos interesa ahora es loginfo, al que tenemos que añadir la siguiente lÃÂnea:
DEFAULT /usr/bin/cvs-mailcommit --mailto direccion@correo.com --from direccion@correo.com --cvs %{sVv} --diff --full
El programa que envÃÂa los correos lo podemos encontrar aquÃÂ. El parámetro mailto indica a quién va destinado el correo. Podemos especificar varios mailto. Lo que yo hago es crear un alias en el servidor de correo y enviar el correo a ese alias. Asàpuedo poner o quitar los usuarios de destino sin tocar este fichero de configuración.
Hacer una copia de seguridad
Veamos un ejemplo de cómo hacer una copia de seguridad de nuestro preciado repositorio de CVS. Simplemente lo que hace es:
- Crea un archivo .tgz con el contenido del repositorio
- EnvÃÂa el archivo a un servidor de backup
- EnvÃÂa un correo al usuario root para avisarle del proceso
El script es bastante simple y puedes adaptarlo a tus necesidades sin gran esfuerzo.
<bash>
#!/bin/sh CVS_ROOT="/var/lib/cvs" TMP_MSG="/tmp/backup_cvs.tmp" TMP_DATA="/root/Backup/CVS#$(date +%Y-%m-%d).tgz" # Make backup echo $TMP_DATA > $TMP_MSG echo "==================================" >> $TMP_MSG /bin/tar czf $TMP_DATA $CVS_ROOT 2>> $TMP_MSG # Subimos todo al FTP de GIT lftp -e "mput $TMP_DATA;quit" ftp://usuario:password@ftp.servidor.com/cvs # Send mail /bin/mail -s "CVS Backup" root < $TMP_MSG /bin/rm $TMP_MSG
</bash>
Ver también
Aplicaciones similares
Enlaces externos
- linux.ie :: Getting Started with CVS (en inglés)
- Sitio web oficial de CVSTrac (en inglés)
- CVSPermissions (en inglés)
- OSSP shiela: CVS Access Control and Logging (en inglés)
- Sitio web oficial de CVS Monitor (en inglés)
- Managing Access with CVS (en inglés)