<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.guia-ubuntu.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://www.guia-ubuntu.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=EltdrOnmon</id>
		<title>Guía Ubuntu - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://www.guia-ubuntu.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=EltdrOnmon"/>
		<link rel="alternate" type="text/html" href="https://www.guia-ubuntu.com/index.php/Especial:Contribuciones/EltdrOnmon"/>
		<updated>2026-04-30T15:56:11Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.22.7</generator>

	<entry>
		<id>https://www.guia-ubuntu.com/index.php/CVSTrac</id>
		<title>CVSTrac</title>
		<link rel="alternate" type="text/html" href="https://www.guia-ubuntu.com/index.php/CVSTrac"/>
				<updated>2008-01-23T06:56:55Z</updated>
		
		<summary type="html">&lt;p&gt;EltdrOnmon: domorroac&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://taniabolster.infinites.net/pau-d-arco.html arco d pau] [http://glorydubuque.ifrance.com/marty-robbins.html marty robbins] [http://maxinemullins.ourprofile.net/car-rental-software.html broker car rental software] [http://doloresdolby.ifrance.com/styles/used-chevy-trucks.html bed chevy truck used] [http://bethanyremaley.qiye.in/volkswagen-high.html high part performance volkswagen] [http://zoemichaud.totalh.com/pedo-teens.html pedo teens] [http://albertmessner.ifrance.com/description/ganges.html daughter ganges memoir] [http://ardelleamaker.ibelgique.com/new/kids-games.html kid game] [http://shaunlakes.infinites.net/lib/warhammer.html warhammer] [http://markettahargett.webpages.jp/wiki/solving-for-x-and.html solving for x and y algebra] [http://glorydubuque.ifrance.com/liver-cleansing.html liver cleansing] [http://norenemosteller.qiye.in/wiki/ho.html ho] [http://verenaholler.ifrance.com/gender-pregnancy.html gender pregnancy selection] [http://hellenaldrich.ifrance.com/female-flashers.html female flashers] [http://gudrunblaney.ibelgique.com/weekend-getaways.html weekend getaway ohio] [http://markettahargett.webpages.jp/wiki/bay-area-carpet.html bay area carpet cleaning companies] [http://reginebolles.ourprofile.net/wild-metal-review.html wild metal review] [http://ruthcolella.ifrance.com/lil-kim-how-many.html lil kim how many licks] [http://dariahopping.ide.am/content/music-list.html music list] [http://chelseyletendre.ifrance.com/staph-infection.html mrsa staph infection] [http://suzanfitts.ide.am/article/winavi.html 7.7 serial winavi] [http://fransiscarushin.ibelgique.com/library/cellular-phone.html cellular new phone verizon] [http://nadinekraft.myweb.io/model-sydney.html model sydney moon] [http://lolastutes.totalh.com/asimo-run-video.html asimo run video] [http://marcellerudd.ibelgique.com/topic/java-script.html either have java script turned] [http://dropofnothing.interfree.it/blog/sexy-al-neon.html sexy al neon] [http://lurlinenations.ourprofile.net/q/lickin.html pussy lickin] [http://doloresdolby.ifrance.com/styles/minneapolis-tribune.html minneapolis tribune] [http://albertmessner.ifrance.com/description/keystone-properties.html keystone properties] [http://dariahopping.ide.am/content/jumping-horses.html jumping horses] [http://chelseyletendre.ifrance.com/dub-wheels.html dub remix wheels] [http://lurlinenations.ourprofile.net/q/inactive-ingredients.html drug in inactive ingredient] [http://hellenaldrich.ifrance.com/chilis-restaurant.html chilis restaurant] [http://bethanyremaley.qiye.in/plump.html plump] [http://misskrys10.datadiri.info/wiki/atthedrivein-music.html atthedrivein music] [http://dorathylapham.myweb.io/lib/at-home-work.html at home work] [http://minervacavin.ide.am/jack-white.html jack raconteurs white] [http://markettahargett.webpages.jp/wiki/john-wayne.html john wayne] [http://fransiscarushin.ibelgique.com/library/insurance.html insurance] [http://zoragingerich.totalh.com/comments/shore-tractor.html shore tractor trailer] [http://sadieandreas.infinites.net/comments/sherry.html fred sherry] [http://elinabankhead.ifrance.com/content/phone-books.html canada phone book] [http://dwanachenard.qiye.in/html/automobiles.html automobiles] [http://julistromberg.qiye.in/q/sunbbs.html sun.bbs] [http://mailewoodmansee.qiye.in/text/floor-mats-for-trucks.html floor mats for trucks] [http://reginebolles.ourprofile.net/election-sosstatetxus.html election sos.state.tx.us] [http://ardelleamaker.ibelgique.com/new/donation.html vehicle donation] [http://minervacavin.ide.am/april.html april] [http://lajuanabivens.ifrance.com/styles/mr-clean.html mr clean] [http://meaghannauman.infinites.net/pat-wynn.html pat wynn] [http://marcellerudd.ibelgique.com/topic/texas-department.html texas department of public safety] [http://ledadantonio.myweb.io/directory/tight-dress.html tight dress] [http://reginebolles.ourprofile.net/never-alone.html never alone] [http://lolastutes.totalh.com/antifilter-free.html antifilter free iran] [http://chelseyletendre.ifrance.com/jennifer-lopez-movies.html jennifer lopez movies] [http://misskrys10.datadiri.info/wiki/amanda-white.html amanda white] [http://verlinewalden.ifrance.com/chappelles-show.html chappelles show episode 4] [http://riastiles.ifrance.com/bearing.html bearing] [http://ryandrabble.interfree.it/australian-real.html australian real estate] [http://athenaadelman.qiye.in/styles/dexters-laboratory.html dexters laboratory] [http://kirstinpinnix.infinites.net/article/phillips-magnavox.html philips magnavox remote control code] [http://glorydubuque.ifrance.com/linkin-park.html linkin park music video] [http://dropofnothing.interfree.it/blog/deep-purple.html deep purple. perihelion] [http://cyrstalbeadles.ifrance.com/student-discount.html student discount adobe] [http://meaghannauman.infinites.net/quality-computers.html computer free high quality] [http://ruthcolella.ifrance.com/armitron.html armitron] [http://zoragingerich.totalh.com/comments/travel-quotes.html health insurance portugal quote travel] [http://elvabroderick.ifrance.com/free-christian-ecards.html free christian ecards] [http://luisalongoria.ide.am/html/committees-junocom.html committees juno.com info 2005] [http://kingdomqueens.interfree.it/malda.html malda] [http://gudrunblaney.ibelgique.com/ascites-end-stage.html ascites end stage liver disease] [http://tajuanapayne.infinites.net/articles/james-doohan.html james doohan death] [http://ryandrabble.interfree.it/orgia-cartoon.html orgia cartoon] [http://julistromberg.qiye.in/q/nicole-oring.html nicole oring] [http://exceptnot.datadiri.info/mattress.html mattress] [http://dariahopping.ide.am/content/inkjet-refill.html cartridge inkjet refill] [http://ardelleamaker.ibelgique.com/new/fanta-costume.html fanta costume halloween girl] [http://dottieroane.ibelgique.com/cheap-oakleys.html cheap oakleys] [http://merrileesiller.ide.am/women-drivers.html women drivers] [http://dovieeustice.ifrance.com/q/digital-state-maps.html digital state maps] [http://lolastutes.totalh.com/danzel-mp3.html danzel mp3] [http://glorydubuque.ifrance.com/greek-language.html greek language] [http://dovieeustice.ifrance.com/q/teen-star.html movie star teen] [http://lolastutes.totalh.com/number-pc-phone.html people pc phone number] [http://zoemichaud.totalh.com/wwf-wrestling.html wwf wrestling figure] [http://taishawilson.ide.am/pc.html pc] [http://dottieroane.ibelgique.com/trailer-electrical.html trailer electrical plugs] [http://karimaabreu.ibelgique.com/blog/domain-name-registration.html domain name registration and hosting] [http://chelseyletendre.ifrance.com/windows-media-player.html windows media player 10] [http://clairetarr.myweb.io/battery-metallica.html battery metallica tribute] [http://aubreypridgen.ibelgique.com/art-schools.html olivia saint free movie] [http://lizabethtroxell.myweb.io/library/bci.html bci] [http://aubreypridgen.ibelgique.com/pain.html lower back pain] [http://gudrunblaney.ibelgique.com/adult-web-cam.html adult web cam] [http://aubreypridgen.ibelgique.com/movie-posters.html movie posters] [http://chelseyletendre.ifrance.com/printed-banners.html printed banners] [http://verlinewalden.ifrance.com/us-playing-card.html us playing card company] [http://annetttorbert.webpages.jp/directory/printable-skateboard.html printable skateboard] [http://misskrys10.datadiri.info/wiki/norshore-theatre.html norshore theatre duluth] [http://riastiles.ifrance.com/map-of-puerto.html detailed map puerto rico] [http://markettahargett.webpages.jp/wiki/free-male-gay-porn.html free male gay porn] [http://aubreypridgen.ibelgique.com/older-woman.html beautiful older woman] [http://lisharumley.ibelgique.com/description/nursing-degree.html nursing degree] [http://sadieandreas.infinites.net/comments/open-source-software.html open source application software] [http://coleneflaherty.ifrance.com/new/shenandoah-valley.html shenandoah valley real estate] [http://zoragingerich.totalh.com/comments/i-will-follow.html i will follow u2 tab] [http://aubreypridgen.ibelgique.com/download-morpheus.html download morpheus] [http://twannarandel.ifrance.com/library/four-horsemen.html four horsemen wrestling] [http://clairetarr.myweb.io/hammock-stand.html hammock stand swing] [http://henriettestribl.totalh.com/content/pork-loin-recipes.html pork loin recipe] [http://randydeeds.ibelgique.com/novaform-mattress.html novaform mattress] [http://mailewoodmansee.qiye.in/text/steamboat-snowmobile.html steamboat snowmobile tours] [http://ardelleamaker.ibelgique.com/new/timing-belt.html timing belt] [http://gudrunblaney.ibelgique.com/ephedra-extract.html ephedra extract] [http://cordiaarney.ifrance.com/blog/door-safety.html safety door] [http://newbeginings31.interfree.it/belle-donne.html belle donne mature] [http://dorathylapham.myweb.io/lib/fine-leather.html fine leather] [http://lajuanabivens.ifrance.com/styles/munchkin-cat.html cat breed munchkin] [http://julianabudd.ifrance.com/ultrasound-procedures.html ultrasound procedures] [http://zoemichaud.totalh.com/wwwmichaelscom.html hostname michaels.com] [http://kingdomqueens.interfree.it/km0-renault-scenic.html km0 renault scenic benzina auto km 0] [http://newbeginings31.interfree.it/bmw-530d-touring.html bmw 530d touring titanium] [http://henriettestribl.totalh.com/content/a-black-dot.html a black dot] [http://julianabudd.ifrance.com/free-men.html free online pac man game] [http://exceptnot.datadiri.info/cherish.html cherish] [http://wwwotvaliru.ourprofile.net/view/kenya-mombasa.html kenya mombasa] [http://corrinaknepper.totalh.com/description/fast-cars.html fast cars] [http://lettiefernald.qiye.in/description/classic-mustang.html classic mustang part] [http://julianabudd.ifrance.com/united-receptacle.html metal receptacle united] [http://chelseyletendre.ifrance.com/isopropyl-alcohol.html isopropyl rubbing alcohol] [http://kingdomqueens.interfree.it/imetec---ferro.html imetec - ferro da stiro con caldaia] [http://karonaron.ide.am/pages/mini-skirt.html sexy mini skirt] [http://delorseengen.myweb.io/directory/daily-babe-of.html daily babe of the day] [http://xiomarapeake.ifrance.com/wiki/shame.html shame] [http://suzanfitts.ide.am/article/kennesaw-ga-realtor.html kennesaw ga realtor] [http://exceptnot.datadiri.info/alden-school-district.html alden school district] [http://dropofnothing.interfree.it/blog/opere-di-salvador.html opere di salvador dali] [http://karimaabreu.ibelgique.com/blog/secret-ringtone.html lover ringtone secret] [http://cordiaarney.ifrance.com/blog/katie-jordan.html katie jordan] [http://annetttorbert.webpages.jp/directory/72-serial-tally.html 7.2 serial tally] [http://nadinekraft.myweb.io/warren-buffett.html warren buffett] [http://twannarandel.ifrance.com/library/swat-4.html swat 4] [http://cyrstalbeadles.ifrance.com/when-darkness.html when darkness falls] [http://markettahargett.webpages.jp/wiki/relocation-quotes.html relocation quotes] [http://doloresdolby.ifrance.com/styles/hydrogen-fuel.html hydrogen fuel cells] [http://dorindaschoenfe.ide.am/florida-truck-accident.html florida truck accident attorneys] [http://zoragingerich.totalh.com/comments/newspaper-covers.html cover newspaper] [http://lizabethtroxell.myweb.io/library/sea-kayak.html sea kayak] [http://luisalongoria.ide.am/html/hawaii-homes-for.html hawaii home for sale] [http://aubreypridgen.ibelgique.com/porn-picture.html lesbian porn picture] [http://jodistilwell.ifrance.com/corvette-car.html corvette car cover] [http://annetttorbert.webpages.jp/directory/deloitte.html deloitte foto] [http://dottieroane.ibelgique.com/blue-h700-headset.html blue h700 headset motorola tooth wireless] [http://lolastutes.totalh.com/cheap-gas.html cheap gas] [http://albertmessner.ifrance.com/description/getting-your-ex.html getting your ex girlfriend back] [http://lurlinenations.ourprofile.net/q/fur-pie.html fur pie] [http://taniabolster.infinites.net/sharp-fax-refills.html sharp fax refills] [http://rosinacelentano.qiye.in/topic/gourmet-chocolates.html chocolate coffee gourmet] [http://melbamarkle.ide.am/interest-only-home.html interest only home loan] [http://lettiefernald.qiye.in/description/would-i-lie-to.html would i lie to you] [http://coleneflaherty.ifrance.com/new/custom-flames.html custom flame painting] [http://karimaabreu.ibelgique.com/blog/mature-nudes.html mature nudes] [http://wwwotvaliru.ourprofile.net/view/low-carb-diet.html low carb diet result] [http://ryandrabble.interfree.it/dolce-zuppa-inglese.html dolce zuppa inglese] [http://zoragingerich.totalh.com/comments/32d-breasts.html 32d breasts] [http://ladycambria.interfree.it/small/frenkie-hi-nrg.html frenkie hi nrg mc] [http://melbamarkle.ide.am/mario-let-me-love.html mario let me love you] [http://karimaabreu.ibelgique.com/blog/cruise-from-new.html new york cruises] [http://hellenaldrich.ifrance.com/amor-real.html amor real] [http://minervacavin.ide.am/deoderant.html deoderant] [http://delorseengen.myweb.io/directory/xp-service-pack.html xp service pack 2 torrent] [http://tenta85.hello.cn.com/jagdish-chandra.html jagdish chandra bose biography] [http://sherlenetoland.infinites.net/pages/windstar-cruises.html windstar cruises] [http://sanayarnell.webpages.jp/bus-tours.html bus tours] [http://reginebolles.ourprofile.net/otis.html mdoc otis] [http://ardelleamaker.ibelgique.com/new/bad-credit-loans.html bad credit loans] [http://kingdomqueens.interfree.it/galleria-tatuaggio.html galleria tatuaggio] [http://coleneflaherty.ifrance.com/new/bodacious-tatas.html bodacious tatas] [http://newbeginings31.interfree.it/milo-catania.html milo (catania)] [http://ardelleamaker.ibelgique.com/new/sofa.html sleeper sofa] [http://dottieroane.ibelgique.com/love.html love] [http://newbeginings31.interfree.it/figli-di-toto-cutugno.html figli di toto cutugno] [http://taishawilson.ide.am/credit-card-debt.html credit card debt settlement] [http://athenaadelman.qiye.in/styles/castle-rock-colorado.html home in castle rock colorado] [http://glorydubuque.ifrance.com/logan-international.html logan international airport boston ma] [http://lajuanabivens.ifrance.com/styles/day-of-the-tentacle.html day of the tentacle] [http://suzanfitts.ide.am/article/janice-dickerson.html janice dickerson] [http://riastiles.ifrance.com/water-vending-machine.html water vending machine] [http://dottieroane.ibelgique.com/buy-fioricet.html buy fioricet line] [http://lizabethtroxell.myweb.io/library/online-medical.html online medical coding training] [http://henriettestribl.totalh.com/content/the-night-santa.html the night santa went crazy] [http://karrenhilderbra.myweb.io/piano-purchase.html piano purchase] [http://nevadanapoleon.infinites.net/text/fairfax-county.html fairfax county library] [http://chelseyletendre.ifrance.com/up-and-down.html up and down] [http://verenaholler.ifrance.com/original-music.html original pilipino music] [http://dottieroane.ibelgique.com/sex-videos-free.html free lesbian sex video] [http://verenaholler.ifrance.com/bachmann-trains.html bachmann trains] [http://wwwotvaliru.ourprofile.net/view/california-gold.html california cased gold gold image rush silver] [http://randydeeds.ibelgique.com/ideepthroat.html ideepthroat] [http://dottieroane.ibelgique.com/download-morpheus.html 5.0 download morpheus] &lt;br /&gt;
liercrice&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
[[Imagen:Cvstrac-mainscn.jpg|thumb|right|CVSTrac es un gestor de repositorios CVS.]]&lt;br /&gt;
&lt;br /&gt;
CVSTrac es un sistema de gestiÃÂ³n de incidencias basado en web para [[:w:es:CVS|CVS]]. MÃÂ¡s informaciÃÂ³n sobre cÃÂ³mo montar un repositorio CVS en [[CVS|esta misma guÃÂ­a]]. Se trata de una aplicaciÃÂ³n sencilla y potente con las siguientes caracterÃÂ­sticas:&lt;br /&gt;
&lt;br /&gt;
* El interfaz web es simple y funcional.&lt;br /&gt;
* Tiene un visualizador de repositorios CVS y un wiki integrados con el sistema de incidencias.&lt;br /&gt;
* Ejecutable, puede funcionar en modo CGI o incluso de forma autÃÂ³noma ya que incluye un servidor web.&lt;br /&gt;
* Usa la base de datos SQLite, lo que permite escribir consultas complejas en SQL.&lt;br /&gt;
* Puede gestionar los usuarios y permisos del repositorio CVS.&lt;br /&gt;
&lt;br /&gt;
== Obtener el ejecutable ==&lt;br /&gt;
En la pÃÂ¡gina del proyecto [http://www.cvstrac.org/cvstrac/wiki?p=DownloadCvstrac http://www.cvstrac.org/] puedes bajar la ÃÂºltima versiÃÂ³n. A dÃÂ­a de hoy es la 2.0, la cual trae muchas mejoras sobre la 1.2.1 que es la que ha estado vigente durante bastante tiempo. Tienes la posibilidad de bajar las fuentes y compilarlas o bajar un binario compilado para SuSE que funcionarÃÂ¡ perfectamente en Dapper. DespuÃÂ©s de bajÃÂ¡rtelo, lo renombras y le das permisos de ejecuciÃÂ³n:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv cvstrac-200-suse92-bin cvstrac&lt;br /&gt;
$ chmod +x cvstrac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora copia el ejecutable a un lugar donde lo puedas encontrar cuando lo quieras ejecutar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo cp cvstrac /usr/bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inicializando la base de datos ==&lt;br /&gt;
CVSTrac contiene su propio motor de base de datos SQL embebido, asÃÂ­ que no necesita ningÃÂºn sistema de RDBMS externo. La base de datos de un proyecto se almacena en un sÃÂ³lo fichero. El primer paso para usar CVSTrac es inicializar esta base de datos. Para ello ejecuta el siguiente comando, pero tiene que ser como un usuario que no sea ''root'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cvstrac init /home/cvs demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O hacerlo asÃÂ­:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ su -c &amp;quot;cvstrac init /home/cvs demo&amp;quot; usuario&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cambia el argumento ''/home/cvs'' por el directorio donde quieras que estÃÂ© la base de datos. Cambia el argumento ''demo'' por el nombre del proyecto CVS que gestionarÃÂ¡ CVSTrac. Con los parÃÂ¡metros actuales se crearÃÂ­a la base de datos llamada ''/home/cvs/demo.db''.&lt;br /&gt;
&lt;br /&gt;
Si vamos a ejecutar la aplicaciÃÂ³n web en modo CGI tendrÃÂ¡s que darle los permisos correspondientes a esta base de datos para que el CGI pueda leerla y modificarla:&lt;br /&gt;
&lt;br /&gt;
 $ chown apache:apache /home/cvs/demo.db&lt;br /&gt;
&lt;br /&gt;
Esta base de datos contiene toda la informaciÃÂ³n del proyecto, por lo que es posible que la queramos consultar para hacer algÃÂºn tipo de informe. El motor que usa es SQLite, por lo que todo el contenido estÃÂ¡ en ese fichero que hemos inicializado previamente. Si has instalado la ÃÂºltima versiÃÂ³n de CVSTrac (actualmente la 2.0.0), verÃÂ¡s que usa como mÃÂ­nimo la versiÃÂ³n 3.3.2 de SQLite3. En Dapper la versiÃÂ³n de SQLite3 es la 3.2.8, de modo que no podrÃÂ¡s hacer consultas sobre este fichero. Lo mÃÂ¡s sencillo es bajarse una versiÃÂ³n compilada de http://www.sqlite.org/ y usar ÃÂ©sta. &lt;br /&gt;
&lt;br /&gt;
{{Nota|Si has bajado la versiÃÂ³n compilada de CVSTrac te funcionarÃÂ¡ perfectamente porque viene compilado estÃÂ¡ticamente con la versiÃÂ³n correcta de SQLite3. Lo de bajarte el binario de SQLite3 actualizado es sÃÂ³lo para poder hacer consultas desde fuera del CVSTrac.}}&lt;br /&gt;
&lt;br /&gt;
== Varias formas de instalaciÃÂ³n ==&lt;br /&gt;
Como hemos visto, tiene varias formas de funcionar. En todas las configuraciones vamos a suponer que el directorio del repositorio CVS se encuentra en ''/home/cvs'' y el programa estarÃÂ¡ accesible en el puerto 80 del servidor.&lt;br /&gt;
&lt;br /&gt;
=== Usando inetd ===&lt;br /&gt;
AÃÂ±ade la siguiente lÃÂ­nea al fichero ''/etc/inetd.conf'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
80 stream tcp nowait.1000 cvs /usr/bin/cvstrac cvstrac http /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usando xinetd ===&lt;br /&gt;
Crea el fichero '''/etc/xinetd.d/cvstrac''' con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   service cvstrac {&lt;br /&gt;
     socket_type = stream&lt;br /&gt;
     wait        = no&lt;br /&gt;
     user        = cvs&lt;br /&gt;
     server      = /usr/bin/cvstrac&lt;br /&gt;
     server_args = http /home/cvs&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como un CGI ===&lt;br /&gt;
Para ejecutarlo como un CGI tiene que crear un script como ÃÂ©ste que encapsule la llamada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
/usr/bin/cvstrac cgi /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este script con extensiÃÂ³n '''.cgi''' lo debes poner en el directorio '''/var/www/cgi-bin'''. Para temas de localizaciÃÂ³n es mejor que el script sea asÃÂ­:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
LANG=es_ES.UTF-8 /usr/bin/cvstrac cgi /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O sea, que le antepones el establecimiento de la variable de entorno LANG para que el programa se ejecute usando los locales adecuados.&lt;br /&gt;
&lt;br /&gt;
=== Como un servidor web autÃÂ³nomo ===&lt;br /&gt;
Si quieres que use su propio servidor web, ejecuta la lÃÂ­nea de comando siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cvstrac server 8008 /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EstarÃÂ¡ a la escucha en el puerto TCP 8008. Ten en cuenta que tienes que ejecutar ''cvstrac'' en el '''CVSROOT''' del proyecto CVS, por ejemplo ''/home/cvs/CVSROOT''. Debe existir un directorio con el mismo nombre del proyecto en el mismo nivel.&lt;br /&gt;
&lt;br /&gt;
== ConfiguraciÃÂ³n ==&lt;br /&gt;
Una vez instalado el programa para poder acceder a ÃÂ©l vÃÂ­a web, entramos al sistema con el usuario y password ''setup''. TendrÃÂ¡s que cambiar el password del usuario ''setup'' por cuestiones de seguridad.&lt;br /&gt;
&lt;br /&gt;
Hay varias cosas a configurar para que se adapte a nuestro sistema de desarrollo. Muchas de ellas son opcionales y permiten hilar fino a la hora de poner todo a nuestro gusto. Sin embargo hay una que es obligatoria y es lo primero que tenemos que hacer: decirle donde se encuentra el repositorio que va a gestionar. Para hacer ÃÂ©sto vamos a '''Setup -&amp;gt; CVS Repository''' y ahÃÂ­ especificamos el directorio donde se encuentra el repositorio. En el caso de nuestro ejemplo serÃÂ­a ''/home/cvs''. La casilla que pone ''Module prefix:'' es por si tenemos muchos mÃÂ³dulos y sÃÂ³lo queremos mostrar algunos.&lt;br /&gt;
&lt;br /&gt;
Si al ir la opciÃÂ³n '''Browse''' no ves ningÃÂºn fichero ni directorio es que has metido los ficheros en el repositorio con un '''cvs import'''. CVSTrac sÃÂ³lo muestras los ficheros que se han incluido con un ''commit''. Vaya, ÃÂ¿y ahora quÃÂ©? Tampoco es tan grave. Puedes forzar un commit de todos los ficheros de un proyecto situÃÂ¡ndote en el directorio de nivel superior y haciendo ÃÂ©sto:&lt;br /&gt;
&lt;br /&gt;
 $ cvs commit -f -R -m &amp;quot;imported into cvstrac&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== GestiÃÂ³n de usuarios ==&lt;br /&gt;
Un usuario con permisos de administrador puede aÃÂ±adir y eliminar usuarios. Estos usuarios de CVSTrac tambiÃÂ©n serÃÂ¡n los usuarios de acceso al repositorio [[CVS]], de modo que podremos restringir de esta forma el acceso y acciones de los usuarios que acceden al repositorio. Hay muchos permisos que les podemos asignar a cada usuario, pero para un usuario normal que trabaje con el cÃÂ³digo del repositorio pondremos los siguientes '''ijknopqrw''', los cuales se detallan a continuaciÃÂ³n:&lt;br /&gt;
&lt;br /&gt;
* '''i (Check-in)''': AÃÂ±adir nuevo cÃÂ³digo al repositorio CVS.&lt;br /&gt;
* '''j (Read-Wiki)''': Ver las pÃÂ¡ginas del wiki.&lt;br /&gt;
* '''k (Wiki)''': Crear o modificar las pÃÂ¡ginas del wiki.&lt;br /&gt;
* '''n (New)''': Crear nuevos tickets de incidencias.&lt;br /&gt;
* '''o (Check-out)''': Leer el cÃÂ³digo del repositorio CVS.&lt;br /&gt;
* '''p (Password)''': Cambiar el password (el suyo, se entiende).&lt;br /&gt;
* '''q (Query)''': Crear o editar informes.&lt;br /&gt;
* '''r (Read)''': Ver tickets y cambiar histÃÂ³rico.&lt;br /&gt;
* '''w (Write)''': Editar tickets.&lt;br /&gt;
&lt;br /&gt;
== Notificaciones en los cambios en los tickets ==&lt;br /&gt;
CVSTrac admite gran cantidad de personalizaciones, como definir un programa externo que se ejecute cada vez que se crea o modifica un ticket. La opciÃÂ³n estÃÂ¡ accesible en ''Setup'' -&amp;gt; ''Change Notification''. El script que nos va a realizar esta tarea es uno tan simple como:&lt;br /&gt;
&lt;br /&gt;
 echo '%d %r'|mail -s '[cvstrac] %p/%s/%t' '%A'&lt;br /&gt;
&lt;br /&gt;
Buscando por ahÃÂ­ me he encontrado este otro mÃÂ¡s currado, pero no lo he probado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
use MIME::Lite;&lt;br /&gt;
use POSIX;&lt;br /&gt;
use Getopt::Long;&lt;br /&gt;
&lt;br /&gt;
Getopt::Long::Configure('bundling');&lt;br /&gt;
&lt;br /&gt;
if( @ARGV &amp;gt; 0 ) {&lt;br /&gt;
  GetOptions( 'a|assigned=s'    =&amp;gt; \$gszAssignedMail,&lt;br /&gt;
              'n|name=s'        =&amp;gt; \$gszAssignedName,&lt;br /&gt;
              'c|contact=s'     =&amp;gt; \$gszContact,&lt;br /&gt;
              'd|description=s' =&amp;gt; \$gszDescription,&lt;br /&gt;
              'i|ticket=s'      =&amp;gt; \$gszTicketNumber,&lt;br /&gt;
              'p|project=s'     =&amp;gt; \$gszProject,&lt;br /&gt;
              'r|remarks=s'     =&amp;gt; \$gszRemarks,&lt;br /&gt;
              's|status=s'      =&amp;gt; \$gszStatus,&lt;br /&gt;
              't|title=s'       =&amp;gt; \$gszTitle,&lt;br /&gt;
              'u|changed=s'     =&amp;gt; \$gszChanged,&lt;br /&gt;
              'o|originator=s'  =&amp;gt; \$gszOriginator,&lt;br /&gt;
              'y|type=s'        =&amp;gt; \$gszType );&lt;br /&gt;
$gszTime = POSIX::strftime(&amp;quot;%a, %m %d %H:%M&amp;quot;, localtime);&lt;br /&gt;
&lt;br /&gt;
  $szBuffer = &amp;lt;&amp;lt;EOT;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
BODY, P, TD, TH { background-color: white; font-size: 10px;&lt;br /&gt;
                  font-family: Arial, Helvetica, Sans-Serif; }&lt;br /&gt;
TH { text-align: left; font-size: 11px; background-color: #e0e0e0; }&lt;br /&gt;
PRE { font-family: Lucida Console, Monaco, Courier New, fixed; font-size: 10px; }&lt;br /&gt;
H1 { font-size: 18px; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Ticket &amp;lt;a href=&amp;quot;http://cvstrac/tktview?tn=$gszTicketNumber&amp;quot;&amp;gt;#$gszTicketNumber&amp;lt;/a&amp;gt; was updated by $gszChanged.&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;table border=0 cellpadding=2 cellspacing=1 bgcolor=&amp;quot;black&amp;quot; width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Title:&amp;lt;/th&amp;gt;&amp;lt;td width=&amp;quot;100%&amp;quot;&amp;gt;$gszTitle&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Type:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;$gszType&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Assigned to:&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;mailto:$gszAssignedMail&amp;quot;&amp;gt;$gszAssignedName&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Status:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;$gszStatus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=2&amp;gt;Description:&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=2&amp;gt;&amp;lt;pre&amp;gt;$gszDescription&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=2&amp;gt;Remarks:&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=2&amp;gt;&amp;lt;pre&amp;gt;$gszRemarks&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Generated by notify.pl at $gszTime&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://cvstrac/tktview?tn=$gszTicketNumber&amp;quot;&amp;gt;View Ticket&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
EOT&lt;br /&gt;
&lt;br /&gt;
$msg = new MIME::Lite&lt;br /&gt;
  From     =&amp;gt; 'issue-tracker@my.domain.com.com',&lt;br /&gt;
  To       =&amp;gt; $gszContact,&lt;br /&gt;
  Cc       =&amp;gt; $gszAssignedMail,&lt;br /&gt;
  Subject  =&amp;gt; &amp;quot;[$gszProject tracker] Ticket $gszTicketNumber updated by $gszChanged&amp;quot;,&lt;br /&gt;
  Type     =&amp;gt; &amp;quot;text/html&amp;quot;,&lt;br /&gt;
  Data     =&amp;gt; $szBuffer;&lt;br /&gt;
$msg-&amp;gt;attr( 'content-type.charset' =&amp;gt; &amp;quot;ISO-8859-1&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
$msg-&amp;gt;send( 'smtp', 'smart.host.my.domain.com');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/perl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso la invocaciÃÂ³n del script serÃÂ­a: &lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/notify.pl -n '%a' -a '%A' -c '%c' -d '%d' -i '%n' -p '%p' -r '%r' \&lt;br /&gt;
 -s '%s' -t '%t' -u '%u' -y '%y' -o '%w'&lt;br /&gt;
&lt;br /&gt;
La barra invertida ('''\''') es para poder ponerlo en dos lÃÂ­neas y mejorar la legibilidad. Cuando lo vaya a usar ponlo todo en una sola lÃÂ­nea.&lt;br /&gt;
&lt;br /&gt;
== Ver tambiÃÂ©n ==&lt;br /&gt;
* [[CVS]]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://www.cvstrac.org/&lt;br /&gt;
* [http://www.developingprogrammers.com/index.php/2005/12/15/cvstrac-and-trac-combined-tutorial/ CVSTrac and Trac Combined Tutorial]&lt;br /&gt;
&lt;br /&gt;
[[CategorÃÂ­a:ProgramaciÃÂ³n]]&lt;/div&gt;</summary>
		<author><name>EltdrOnmon</name></author>	</entry>

	<entry>
		<id>https://www.guia-ubuntu.com/index.php/CVSTrac</id>
		<title>CVSTrac</title>
		<link rel="alternate" type="text/html" href="https://www.guia-ubuntu.com/index.php/CVSTrac"/>
				<updated>2008-01-08T17:45:31Z</updated>
		
		<summary type="html">&lt;p&gt;EltdrOnmon: ergetcnaelta&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;liercrice&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
[[Imagen:Cvstrac-mainscn.jpg|thumb|right|CVSTrac es un gestor de repositorios CVS.]]&lt;br /&gt;
&lt;br /&gt;
CVSTrac es un sistema de gestiÃ³n de incidencias basado en web para [[:w:es:CVS|CVS]]. MÃ¡s informaciÃ³n sobre cÃ³mo montar un repositorio CVS en [[CVS|esta misma guÃ­a]]. Se trata de una aplicaciÃ³n sencilla y potente con las siguientes caracterÃ­sticas:&lt;br /&gt;
&lt;br /&gt;
* El interfaz web es simple y funcional.&lt;br /&gt;
* Tiene un visualizador de repositorios CVS y un wiki integrados con el sistema de incidencias.&lt;br /&gt;
* Ejecutable, puede funcionar en modo CGI o incluso de forma autÃ³noma ya que incluye un servidor web.&lt;br /&gt;
* Usa la base de datos SQLite, lo que permite escribir consultas complejas en SQL.&lt;br /&gt;
* Puede gestionar los usuarios y permisos del repositorio CVS.&lt;br /&gt;
&lt;br /&gt;
== Obtener el ejecutable ==&lt;br /&gt;
En la pÃ¡gina del proyecto [http://www.cvstrac.org/cvstrac/wiki?p=DownloadCvstrac http://www.cvstrac.org/] puedes bajar la Ãºltima versiÃ³n. A dÃ­a de hoy es la 2.0, la cual trae muchas mejoras sobre la 1.2.1 que es la que ha estado vigente durante bastante tiempo. Tienes la posibilidad de bajar las fuentes y compilarlas o bajar un binario compilado para SuSE que funcionarÃ¡ perfectamente en Dapper. DespuÃ©s de bajÃ¡rtelo, lo renombras y le das permisos de ejecuciÃ³n:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv cvstrac-200-suse92-bin cvstrac&lt;br /&gt;
$ chmod +x cvstrac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora copia el ejecutable a un lugar donde lo puedas encontrar cuando lo quieras ejecutar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo cp cvstrac /usr/bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Inicializando la base de datos ==&lt;br /&gt;
CVSTrac contiene su propio motor de base de datos SQL embebido, asÃ­ que no necesita ningÃºn sistema de RDBMS externo. La base de datos de un proyecto se almacena en un sÃ³lo fichero. El primer paso para usar CVSTrac es inicializar esta base de datos. Para ello ejecuta el siguiente comando, pero tiene que ser como un usuario que no sea ''root'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cvstrac init /home/cvs demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O hacerlo asÃ­:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ su -c &amp;quot;cvstrac init /home/cvs demo&amp;quot; usuario&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cambia el argumento ''/home/cvs'' por el directorio donde quieras que estÃ© la base de datos. Cambia el argumento ''demo'' por el nombre del proyecto CVS que gestionarÃ¡ CVSTrac. Con los parÃ¡metros actuales se crearÃ­a la base de datos llamada ''/home/cvs/demo.db''.&lt;br /&gt;
&lt;br /&gt;
Si vamos a ejecutar la aplicaciÃ³n web en modo CGI tendrÃ¡s que darle los permisos correspondientes a esta base de datos para que el CGI pueda leerla y modificarla:&lt;br /&gt;
&lt;br /&gt;
 $ chown apache:apache /home/cvs/demo.db&lt;br /&gt;
&lt;br /&gt;
Esta base de datos contiene toda la informaciÃ³n del proyecto, por lo que es posible que la queramos consultar para hacer algÃºn tipo de informe. El motor que usa es SQLite, por lo que todo el contenido estÃ¡ en ese fichero que hemos inicializado previamente. Si has instalado la Ãºltima versiÃ³n de CVSTrac (actualmente la 2.0.0), verÃ¡s que usa como mÃ­nimo la versiÃ³n 3.3.2 de SQLite3. En Dapper la versiÃ³n de SQLite3 es la 3.2.8, de modo que no podrÃ¡s hacer consultas sobre este fichero. Lo mÃ¡s sencillo es bajarse una versiÃ³n compilada de http://www.sqlite.org/ y usar Ã©sta. &lt;br /&gt;
&lt;br /&gt;
{{Nota|Si has bajado la versiÃ³n compilada de CVSTrac te funcionarÃ¡ perfectamente porque viene compilado estÃ¡ticamente con la versiÃ³n correcta de SQLite3. Lo de bajarte el binario de SQLite3 actualizado es sÃ³lo para poder hacer consultas desde fuera del CVSTrac.}}&lt;br /&gt;
&lt;br /&gt;
== Varias formas de instalaciÃ³n ==&lt;br /&gt;
Como hemos visto, tiene varias formas de funcionar. En todas las configuraciones vamos a suponer que el directorio del repositorio CVS se encuentra en ''/home/cvs'' y el programa estarÃ¡ accesible en el puerto 80 del servidor.&lt;br /&gt;
&lt;br /&gt;
=== Usando inetd ===&lt;br /&gt;
AÃ±ade la siguiente lÃ­nea al fichero ''/etc/inetd.conf'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
80 stream tcp nowait.1000 cvs /usr/bin/cvstrac cvstrac http /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Usando xinetd ===&lt;br /&gt;
Crea el fichero '''/etc/xinetd.d/cvstrac''' con el siguiente contenido:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   service cvstrac {&lt;br /&gt;
     socket_type = stream&lt;br /&gt;
     wait        = no&lt;br /&gt;
     user        = cvs&lt;br /&gt;
     server      = /usr/bin/cvstrac&lt;br /&gt;
     server_args = http /home/cvs&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como un CGI ===&lt;br /&gt;
Para ejecutarlo como un CGI tiene que crear un script como Ã©ste que encapsule la llamada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
/usr/bin/cvstrac cgi /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este script con extensiÃ³n '''.cgi''' lo debes poner en el directorio '''/var/www/cgi-bin'''. Para temas de localizaciÃ³n es mejor que el script sea asÃ­:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
LANG=es_ES.UTF-8 /usr/bin/cvstrac cgi /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O sea, que le antepones el establecimiento de la variable de entorno LANG para que el programa se ejecute usando los locales adecuados.&lt;br /&gt;
&lt;br /&gt;
=== Como un servidor web autÃ³nomo ===&lt;br /&gt;
Si quieres que use su propio servidor web, ejecuta la lÃ­nea de comando siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cvstrac server 8008 /home/cvs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EstarÃ¡ a la escucha en el puerto TCP 8008. Ten en cuenta que tienes que ejecutar ''cvstrac'' en el '''CVSROOT''' del proyecto CVS, por ejemplo ''/home/cvs/CVSROOT''. Debe existir un directorio con el mismo nombre del proyecto en el mismo nivel.&lt;br /&gt;
&lt;br /&gt;
== ConfiguraciÃ³n ==&lt;br /&gt;
Una vez instalado el programa para poder acceder a Ã©l vÃ­a web, entramos al sistema con el usuario y password ''setup''. TendrÃ¡s que cambiar el password del usuario ''setup'' por cuestiones de seguridad.&lt;br /&gt;
&lt;br /&gt;
Hay varias cosas a configurar para que se adapte a nuestro sistema de desarrollo. Muchas de ellas son opcionales y permiten hilar fino a la hora de poner todo a nuestro gusto. Sin embargo hay una que es obligatoria y es lo primero que tenemos que hacer: decirle donde se encuentra el repositorio que va a gestionar. Para hacer Ã©sto vamos a '''Setup -&amp;gt; CVS Repository''' y ahÃ­ especificamos el directorio donde se encuentra el repositorio. En el caso de nuestro ejemplo serÃ­a ''/home/cvs''. La casilla que pone ''Module prefix:'' es por si tenemos muchos mÃ³dulos y sÃ³lo queremos mostrar algunos.&lt;br /&gt;
&lt;br /&gt;
Si al ir la opciÃ³n '''Browse''' no ves ningÃºn fichero ni directorio es que has metido los ficheros en el repositorio con un '''cvs import'''. CVSTrac sÃ³lo muestras los ficheros que se han incluido con un ''commit''. Vaya, Â¿y ahora quÃ©? Tampoco es tan grave. Puedes forzar un commit de todos los ficheros de un proyecto situÃ¡ndote en el directorio de nivel superior y haciendo Ã©sto:&lt;br /&gt;
&lt;br /&gt;
 $ cvs commit -f -R -m &amp;quot;imported into cvstrac&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== GestiÃ³n de usuarios ==&lt;br /&gt;
Un usuario con permisos de administrador puede aÃ±adir y eliminar usuarios. Estos usuarios de CVSTrac tambiÃ©n serÃ¡n los usuarios de acceso al repositorio [[CVS]], de modo que podremos restringir de esta forma el acceso y acciones de los usuarios que acceden al repositorio. Hay muchos permisos que les podemos asignar a cada usuario, pero para un usuario normal que trabaje con el cÃ³digo del repositorio pondremos los siguientes '''ijknopqrw''', los cuales se detallan a continuaciÃ³n:&lt;br /&gt;
&lt;br /&gt;
* '''i (Check-in)''': AÃ±adir nuevo cÃ³digo al repositorio CVS.&lt;br /&gt;
* '''j (Read-Wiki)''': Ver las pÃ¡ginas del wiki.&lt;br /&gt;
* '''k (Wiki)''': Crear o modificar las pÃ¡ginas del wiki.&lt;br /&gt;
* '''n (New)''': Crear nuevos tickets de incidencias.&lt;br /&gt;
* '''o (Check-out)''': Leer el cÃ³digo del repositorio CVS.&lt;br /&gt;
* '''p (Password)''': Cambiar el password (el suyo, se entiende).&lt;br /&gt;
* '''q (Query)''': Crear o editar informes.&lt;br /&gt;
* '''r (Read)''': Ver tickets y cambiar histÃ³rico.&lt;br /&gt;
* '''w (Write)''': Editar tickets.&lt;br /&gt;
&lt;br /&gt;
== Notificaciones en los cambios en los tickets ==&lt;br /&gt;
CVSTrac admite gran cantidad de personalizaciones, como definir un programa externo que se ejecute cada vez que se crea o modifica un ticket. La opciÃ³n estÃ¡ accesible en ''Setup'' -&amp;gt; ''Change Notification''. El script que nos va a realizar esta tarea es uno tan simple como:&lt;br /&gt;
&lt;br /&gt;
 echo '%d %r'|mail -s '[cvstrac] %p/%s/%t' '%A'&lt;br /&gt;
&lt;br /&gt;
Buscando por ahÃ­ me he encontrado este otro mÃ¡s currado, pero no lo he probado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
use MIME::Lite;&lt;br /&gt;
use POSIX;&lt;br /&gt;
use Getopt::Long;&lt;br /&gt;
&lt;br /&gt;
Getopt::Long::Configure('bundling');&lt;br /&gt;
&lt;br /&gt;
if( @ARGV &amp;gt; 0 ) {&lt;br /&gt;
  GetOptions( 'a|assigned=s'    =&amp;gt; \$gszAssignedMail,&lt;br /&gt;
              'n|name=s'        =&amp;gt; \$gszAssignedName,&lt;br /&gt;
              'c|contact=s'     =&amp;gt; \$gszContact,&lt;br /&gt;
              'd|description=s' =&amp;gt; \$gszDescription,&lt;br /&gt;
              'i|ticket=s'      =&amp;gt; \$gszTicketNumber,&lt;br /&gt;
              'p|project=s'     =&amp;gt; \$gszProject,&lt;br /&gt;
              'r|remarks=s'     =&amp;gt; \$gszRemarks,&lt;br /&gt;
              's|status=s'      =&amp;gt; \$gszStatus,&lt;br /&gt;
              't|title=s'       =&amp;gt; \$gszTitle,&lt;br /&gt;
              'u|changed=s'     =&amp;gt; \$gszChanged,&lt;br /&gt;
              'o|originator=s'  =&amp;gt; \$gszOriginator,&lt;br /&gt;
              'y|type=s'        =&amp;gt; \$gszType );&lt;br /&gt;
$gszTime = POSIX::strftime(&amp;quot;%a, %m %d %H:%M&amp;quot;, localtime);&lt;br /&gt;
&lt;br /&gt;
  $szBuffer = &amp;lt;&amp;lt;EOT;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
BODY, P, TD, TH { background-color: white; font-size: 10px;&lt;br /&gt;
                  font-family: Arial, Helvetica, Sans-Serif; }&lt;br /&gt;
TH { text-align: left; font-size: 11px; background-color: #e0e0e0; }&lt;br /&gt;
PRE { font-family: Lucida Console, Monaco, Courier New, fixed; font-size: 10px; }&lt;br /&gt;
H1 { font-size: 18px; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Ticket &amp;lt;a href=&amp;quot;http://cvstrac/tktview?tn=$gszTicketNumber&amp;quot;&amp;gt;#$gszTicketNumber&amp;lt;/a&amp;gt; was updated by $gszChanged.&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;table border=0 cellpadding=2 cellspacing=1 bgcolor=&amp;quot;black&amp;quot; width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Title:&amp;lt;/th&amp;gt;&amp;lt;td width=&amp;quot;100%&amp;quot;&amp;gt;$gszTitle&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Type:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;$gszType&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Assigned to:&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&lt;br /&gt;
    &amp;lt;a href=&amp;quot;mailto:$gszAssignedMail&amp;quot;&amp;gt;$gszAssignedName&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Status:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;$gszStatus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=2&amp;gt;Description:&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=2&amp;gt;&amp;lt;pre&amp;gt;$gszDescription&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=2&amp;gt;Remarks:&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=2&amp;gt;&amp;lt;pre&amp;gt;$gszRemarks&amp;lt;/pre&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
Generated by notify.pl at $gszTime&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://cvstrac/tktview?tn=$gszTicketNumber&amp;quot;&amp;gt;View Ticket&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
EOT&lt;br /&gt;
&lt;br /&gt;
$msg = new MIME::Lite&lt;br /&gt;
  From     =&amp;gt; 'issue-tracker@my.domain.com.com',&lt;br /&gt;
  To       =&amp;gt; $gszContact,&lt;br /&gt;
  Cc       =&amp;gt; $gszAssignedMail,&lt;br /&gt;
  Subject  =&amp;gt; &amp;quot;[$gszProject tracker] Ticket $gszTicketNumber updated by $gszChanged&amp;quot;,&lt;br /&gt;
  Type     =&amp;gt; &amp;quot;text/html&amp;quot;,&lt;br /&gt;
  Data     =&amp;gt; $szBuffer;&lt;br /&gt;
$msg-&amp;gt;attr( 'content-type.charset' =&amp;gt; &amp;quot;ISO-8859-1&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
$msg-&amp;gt;send( 'smtp', 'smart.host.my.domain.com');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/perl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En este caso la invocaciÃ³n del script serÃ­a: &lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/notify.pl -n '%a' -a '%A' -c '%c' -d '%d' -i '%n' -p '%p' -r '%r' \&lt;br /&gt;
 -s '%s' -t '%t' -u '%u' -y '%y' -o '%w'&lt;br /&gt;
&lt;br /&gt;
La barra invertida ('''\''') es para poder ponerlo en dos lÃ­neas y mejorar la legibilidad. Cuando lo vaya a usar ponlo todo en una sola lÃ­nea.&lt;br /&gt;
&lt;br /&gt;
== Ver tambiÃ©n ==&lt;br /&gt;
* [[CVS]]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* http://www.cvstrac.org/&lt;br /&gt;
* [http://www.developingprogrammers.com/index.php/2005/12/15/cvstrac-and-trac-combined-tutorial/ CVSTrac and Trac Combined Tutorial]&lt;br /&gt;
&lt;br /&gt;
[[CategorÃ­a:ProgramaciÃ³n]]&lt;/div&gt;</summary>
		<author><name>EltdrOnmon</name></author>	</entry>

	</feed>