|
|
(No se muestran 22 ediciones intermedias realizadas por 10 usuarios) |
Línea 1: |
Línea 1: |
− | [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]
| |
− | liercrice
| |
| __TOC__ | | __TOC__ |
| | | |
| [[Imagen:Cvstrac-mainscn.jpg|thumb|right|CVSTrac es un gestor de repositorios CVS.]] | | [[Imagen:Cvstrac-mainscn.jpg|thumb|right|CVSTrac es un gestor de repositorios CVS.]] |
| | | |
− | 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: | + | 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: |
| | | |
| * El interfaz web es simple y funcional. | | * El interfaz web es simple y funcional. |
| * Tiene un visualizador de repositorios CVS y un wiki integrados con el sistema de incidencias. | | * Tiene un visualizador de repositorios CVS y un wiki integrados con el sistema de incidencias. |
− | * Ejecutable, puede funcionar en modo CGI o incluso de forma autónoma ya que incluye un servidor web. | + | * Ejecutable, puede funcionar en modo CGI o incluso de forma autónoma ya que incluye un servidor web. |
| * Usa la base de datos SQLite, lo que permite escribir consultas complejas en SQL. | | * Usa la base de datos SQLite, lo que permite escribir consultas complejas en SQL. |
| * Puede gestionar los usuarios y permisos del repositorio CVS. | | * Puede gestionar los usuarios y permisos del repositorio CVS. |
| | | |
| == Obtener el ejecutable == | | == Obtener el ejecutable == |
− | 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: | + | 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: |
| | | |
| <pre> | | <pre> |
Línea 28: |
Línea 26: |
| | | |
| == Inicializando la base de datos == | | == Inicializando la base de datos == |
− | 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'': | + | 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'': |
| | | |
| <pre> | | <pre> |
Línea 34: |
Línea 32: |
| </pre> | | </pre> |
| | | |
− | O hacerlo asÃÂ: | + | O hacerlo así: |
| | | |
| <pre> | | <pre> |
Línea 40: |
Línea 38: |
| </pre> | | </pre> |
| | | |
− | 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''. | + | 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''. |
| | | |
− | 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: | + | 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: |
| | | |
| $ chown apache:apache /home/cvs/demo.db | | $ chown apache:apache /home/cvs/demo.db |
| | | |
− | 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. | + | 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. |
| | | |
− | {{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.}} | + | {{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.}} |
| | | |
− | == Varias formas de instalación == | + | == Varias formas de instalación == |
− | 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. | + | 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. |
| | | |
| === Usando inetd === | | === Usando inetd === |
− | Añade la siguiente lÃÂnea al fichero ''/etc/inetd.conf'':
| + | Añade la siguiente línea al fichero ''/etc/inetd.conf'': |
| | | |
| <pre> | | <pre> |
Línea 74: |
Línea 72: |
| | | |
| === Como un CGI === | | === Como un CGI === |
− | Para ejecutarlo como un CGI tiene que crear un script como éste que encapsule la llamada: | + | Para ejecutarlo como un CGI tiene que crear un script como éste que encapsule la llamada: |
| | | |
| <pre> | | <pre> |
Línea 82: |
Línea 80: |
| </pre> | | </pre> |
| | | |
− | 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ÃÂ: | + | 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í: |
| | | |
| <pre> | | <pre> |
Línea 92: |
Línea 90: |
| O sea, que le antepones el establecimiento de la variable de entorno LANG para que el programa se ejecute usando los locales adecuados. | | O sea, que le antepones el establecimiento de la variable de entorno LANG para que el programa se ejecute usando los locales adecuados. |
| | | |
− | === Como un servidor web autónomo === | + | === Como un servidor web autónomo === |
− | Si quieres que use su propio servidor web, ejecuta la lÃÂnea de comando siguiente: | + | Si quieres que use su propio servidor web, ejecuta la línea de comando siguiente: |
| | | |
| <pre> | | <pre> |
Línea 99: |
Línea 97: |
| </pre> | | </pre> |
| | | |
− | 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.
| + | 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. |
| | | |
− | == Configuración == | + | == Configuración == |
− | 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. | + | 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. |
| | | |
− | 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 -> 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. | + | 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 -> 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. |
| | | |
− | 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: | + | 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: |
| | | |
| $ cvs commit -f -R -m "imported into cvstrac" | | $ cvs commit -f -R -m "imported into cvstrac" |
| | | |
− | == Gestión de usuarios == | + | == Gestión de usuarios == |
− | 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: | + | 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: |
| | | |
− | * '''i (Check-in)''': Añadir nuevo código al repositorio CVS. | + | * '''i (Check-in)''': Añadir nuevo código al repositorio CVS. |
− | * '''j (Read-Wiki)''': Ver las páginas del wiki. | + | * '''j (Read-Wiki)''': Ver las páginas del wiki. |
− | * '''k (Wiki)''': Crear o modificar las páginas del wiki. | + | * '''k (Wiki)''': Crear o modificar las páginas del wiki. |
| * '''n (New)''': Crear nuevos tickets de incidencias. | | * '''n (New)''': Crear nuevos tickets de incidencias. |
− | * '''o (Check-out)''': Leer el código del repositorio CVS. | + | * '''o (Check-out)''': Leer el código del repositorio CVS. |
| * '''p (Password)''': Cambiar el password (el suyo, se entiende). | | * '''p (Password)''': Cambiar el password (el suyo, se entiende). |
| * '''q (Query)''': Crear o editar informes. | | * '''q (Query)''': Crear o editar informes. |
− | * '''r (Read)''': Ver tickets y cambiar histórico. | + | * '''r (Read)''': Ver tickets y cambiar histórico. |
| * '''w (Write)''': Editar tickets. | | * '''w (Write)''': Editar tickets. |
| | | |
| == Notificaciones en los cambios en los tickets == | | == Notificaciones en los cambios en los tickets == |
− | 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'' -> ''Change Notification''. El script que nos va a realizar esta tarea es uno tan simple como: | + | 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'' -> ''Change Notification''. El script que nos va a realizar esta tarea es uno tan simple como: |
| | | |
| echo '%d %r'|mail -s '[cvstrac] %p/%s/%t' '%A' | | echo '%d %r'|mail -s '[cvstrac] %p/%s/%t' '%A' |
| | | |
− | Buscando por ahàme he encontrado este otro más currado, pero no lo he probado: | + | Buscando por ahí me he encontrado este otro más currado, pero no lo he probado: |
| | | |
| <perl> | | <perl> |
Línea 198: |
Línea 196: |
| </perl> | | </perl> |
| | | |
− | En este caso la invocación del script serÃÂa: | + | En este caso la invocación del script sería: |
| | | |
| /usr/local/bin/notify.pl -n '%a' -a '%A' -c '%c' -d '%d' -i '%n' -p '%p' -r '%r' \ | | /usr/local/bin/notify.pl -n '%a' -a '%A' -c '%c' -d '%d' -i '%n' -p '%p' -r '%r' \ |
| -s '%s' -t '%t' -u '%u' -y '%y' -o '%w' | | -s '%s' -t '%t' -u '%u' -y '%y' -o '%w' |
| | | |
− | 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. | + | 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. |
| | | |
− | == Ver también == | + | == Ver también == |
| * [[CVS]] | | * [[CVS]] |
| | | |
Línea 212: |
Línea 210: |
| * [http://www.developingprogrammers.com/index.php/2005/12/15/cvstrac-and-trac-combined-tutorial/ CVSTrac and Trac Combined Tutorial] | | * [http://www.developingprogrammers.com/index.php/2005/12/15/cvstrac-and-trac-combined-tutorial/ CVSTrac and Trac Combined Tutorial] |
| | | |
− | [[CategorÃÂa:Programación]] | + | [[Categoría:Programación]] |
Última revisión de 08:29 21 ago 2009
CVSTrac es un gestor de repositorios CVS.
CVSTrac es un sistema de gestión de incidencias basado en web para CVS. Más información sobre cómo montar un repositorio CVS en esta misma guía. Se trata de una aplicación sencilla y potente con las siguientes características:
- El interfaz web es simple y funcional.
- Tiene un visualizador de repositorios CVS y un wiki integrados con el sistema de incidencias.
- Ejecutable, puede funcionar en modo CGI o incluso de forma autónoma ya que incluye un servidor web.
- Usa la base de datos SQLite, lo que permite escribir consultas complejas en SQL.
- Puede gestionar los usuarios y permisos del repositorio CVS.
Obtener el ejecutable
En la página del proyecto 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:
$ mv cvstrac-200-suse92-bin cvstrac
$ chmod +x cvstrac
Ahora copia el ejecutable a un lugar donde lo puedas encontrar cuando lo quieras ejecutar:
$ sudo cp cvstrac /usr/bin
Inicializando la base de datos
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:
$ cvstrac init /home/cvs demo
O hacerlo así:
$ su -c "cvstrac init /home/cvs demo" usuario
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.
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:
$ chown apache:apache /home/cvs/demo.db
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.
|
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. |
Varias formas de instalación
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.
Usando inetd
Añade la siguiente línea al fichero /etc/inetd.conf:
80 stream tcp nowait.1000 cvs /usr/bin/cvstrac cvstrac http /home/cvs
Usando xinetd
Crea el fichero /etc/xinetd.d/cvstrac con el siguiente contenido:
service cvstrac {
socket_type = stream
wait = no
user = cvs
server = /usr/bin/cvstrac
server_args = http /home/cvs
}
Como un CGI
Para ejecutarlo como un CGI tiene que crear un script como éste que encapsule la llamada:
#!/bin/sh
/usr/bin/cvstrac cgi /home/cvs
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í:
#!/bin/sh
LANG=es_ES.UTF-8 /usr/bin/cvstrac cgi /home/cvs
O sea, que le antepones el establecimiento de la variable de entorno LANG para que el programa se ejecute usando los locales adecuados.
Como un servidor web autónomo
Si quieres que use su propio servidor web, ejecuta la línea de comando siguiente:
$ cvstrac server 8008 /home/cvs
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.
Configuración
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.
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 -> 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.
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:
$ cvs commit -f -R -m "imported into cvstrac"
Gestión de usuarios
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:
- i (Check-in): Añadir nuevo código al repositorio CVS.
- j (Read-Wiki): Ver las páginas del wiki.
- k (Wiki): Crear o modificar las páginas del wiki.
- n (New): Crear nuevos tickets de incidencias.
- o (Check-out): Leer el código del repositorio CVS.
- p (Password): Cambiar el password (el suyo, se entiende).
- q (Query): Crear o editar informes.
- r (Read): Ver tickets y cambiar histórico.
- w (Write): Editar tickets.
Notificaciones en los cambios en los tickets
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 -> Change Notification. El script que nos va a realizar esta tarea es uno tan simple como:
echo '%d %r'|mail -s '[cvstrac] %p/%s/%t' '%A'
Buscando por ahí me he encontrado este otro más currado, pero no lo he probado:
<perl>
- !/usr/bin/perl
use MIME::Lite;
use POSIX;
use Getopt::Long;
Getopt::Long::Configure('bundling');
if( @ARGV > 0 ) {
GetOptions( 'a|assigned=s' => \$gszAssignedMail,
'n|name=s' => \$gszAssignedName,
'c|contact=s' => \$gszContact,
'd|description=s' => \$gszDescription,
'i|ticket=s' => \$gszTicketNumber,
'p|project=s' => \$gszProject,
'r|remarks=s' => \$gszRemarks,
's|status=s' => \$gszStatus,
't|title=s' => \$gszTitle,
'u|changed=s' => \$gszChanged,
'o|originator=s' => \$gszOriginator,
'y|type=s' => \$gszType );
$gszTime = POSIX::strftime("%a, %m %d %H:%M", localtime);
$szBuffer = <<EOT;
<html>
<style>
BODY, P, TD, TH { background-color: white; font-size: 10px;
font-family: Arial, Helvetica, Sans-Serif; }
TH { text-align: left; font-size: 11px; background-color: #e0e0e0; }
PRE { font-family: Lucida Console, Monaco, Courier New, fixed; font-size: 10px; }
H1 { font-size: 18px; }
</style>
<body>
Title: | $gszTitle |
Type: | $gszType |
Assigned to: |
<a href="mailto:$gszAssignedMail">$gszAssignedName</a>
|
Status: | $gszStatus |
Description: |
$gszDescription |
Remarks: |
$gszRemarks |
Generated by notify.pl at $gszTime
<a href="http://cvstrac/tktview?tn=$gszTicketNumber">View Ticket</a>
</body>
</html>
EOT
$msg = new MIME::Lite
From => 'issue-tracker@my.domain.com.com',
To => $gszContact,
Cc => $gszAssignedMail,
Subject => "[$gszProject tracker] Ticket $gszTicketNumber updated by $gszChanged",
Type => "text/html",
Data => $szBuffer;
$msg->attr( 'content-type.charset' => "ISO-8859-1" );
$msg->send( 'smtp', 'smart.host.my.domain.com');
}
</perl>
En este caso la invocación del script sería:
/usr/local/bin/notify.pl -n '%a' -a '%A' -c '%c' -d '%d' -i '%n' -p '%p' -r '%r' \
-s '%s' -t '%t' -u '%u' -y '%y' -o '%w'
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.
Ver también
Enlaces externos