• 这个公司和 autodesk 有关系麽?

    我有的时候总把他和 autodesk 弄混了。

  • 个人资料如何编辑? at 2008年07月17日

    CMing 于 2008-7-17 11:15 发表
    查看个人资料,没有找到编辑个人资料的地方,麻请告知. 3Q. [/quote]

    论坛右上角图标:控制面板 [attach] 81[/attach]

    点进去可以看到:编辑个人资料 [attach] 82[/attach]

  • ozeni.me ozledi.me ozlijedi.me ozljedi.me oznaci.me ozraci.me p2p.me pacific.me paga.me paid.me pain.me paint.me palladium.me pamela.me pamper.me panty.me paraguay.me paralegal.me parents.me parker.me parkiraj.me parlacon.me parlodi.me partners.me pass.me passover.me password.me past.me pat.me patel.me patent.me patentiraj.me patricia.me patrick.me paul.me pauziraj.me pay.me payroll.me pda.me pecatiraj.me peer.me penis.me pensaa.me peoplelocator.me perez.me perform.me person.me personal.me personals.me personnel.me perth.me pet.me peters.me petit.me petite.me petrochemical.me petroleum.me pets.me petsupplies.me pharma.me pharmacy.me phillips.me phone.me phonecard.me phonefree.me phonenumber.me phones.me phonesystem.me photo.me photographer.me physician.me pick.me piensa.me pimp.me pimple.me pin.me pit.me pitaj.me pix.me place.me placebets.me placement.me places.me plan.me planet.me plasma.me plasmatv.me plati.me play.me pobedi.me pobijedi.me pobjedi.me pocepaj.me pocijepaj.me pocjepaj.me podeli.me podesi.me podigni.me podijeli.me podjeli.me podmazi.me podseti.me podsjeti.me pogledaj.me pogodi.me pohvali.me point.me pojedi.me pokazi.me poker.me pokloni.me pokori.me pokrij.me pokupi.me pokusaj.me pokvari.me police.me poljubi.me polomi.me polozi.me pomesaj.me pomijesaj.me pomirisi.me pomjesaj.me ponesi.me ponizi.me ponovi.me popisi.me popov.me popravi.me popupblocker.me poredjaj.me porker.me porn.me porno.me port.me portal.me poruci.me pos.me posada.me posalji.me posavetuj.me posavjetuj.me poseti.me posjeti.me poslusaj.me posmatraj.me postedi.me postuj.me posvadjaj.me potrazi.me pottery.me potvrdi.me povedi.me povezi.me povredi.me povrijedi.me povrjedi.me povuci.me power.me pozajmi.me pozdravi.me pozeli.me pozovi.me prati.me pravdaj.me prayer.me prebaci.me predaj.me predstavi.me prefer.me pregledaj.me pregunta.me prekni.me premium.me prendi.me prepaid.me prepaidphone.me prepare.me prepisi.me preplasi.me preporuci.me prepoznaj.me present.me presnimi.me press.me prevari.me prevent.me prevezi.me prevozi.me priblizi.me price.me prihvati.me prijavi.me prikljuci.me prikupi.me primami.me prime.me primerate.me primi.me print.me printer.me prisvoji.me pritvori.me private.me privezi.me privuci.me prize.me prizefight.me priznaj.me probaj.me probudi.me proceni.me processor.me procijeni.me procjeni.me prodaj.me prodji.me produce.me produzi.me professor.me programas.me programiraj.me programmer.me proizvedi.me proknjizi.me prom.me promeni.me promesaj.me promijeni.me promijesaj.me promise.me promjeni.me promjesaj.me promote.me promotion.me pronadji.me property.me propusti.me proracunaj.me proshop.me prosiri.me prosvetli.me prosvijetli.me prosvjetli.me protect.me prouci.me prove.me proveri.me provide.me provjeri.me provozaj.me psychologists.me publica.me publicidad.me publicrelations.me publish.me pull.me punt.me push.me put.me pvc.me quality.me quick.me quiere.me quilting.me quinn.me races.me rachel.me rail.me railway.me railways.me raise.me ramos.me rani.me rap.me rasiri.me raspakuj.me rastavi.me rate.me rating.me ratings.me razdvoji.me razjasni.me razlikuj.me razocaraj.me razonodi.me razoruzaj.me razvedi.me razveseli.me rcs.me reach.me read.me real.me realestate.me realize.me realty.me rebate.me rebates.me rebecca.me receive.me recognize.me record.me recruiter.me recycle.me recycling.me red.me redmond.me reduce.me refer.me refi.me refinance.me refinancing.me reflect.me refresh.me refuse.me regard.me regarding.me rehab.me relate.me release.me religion.me remain.me remember.me remind.me remove.me rent.me rental.me repeat.me replace.me reply.me report.me represent.me require.me rescue.me reserve.me resi.me resort.me rest.me restaurant.me result.me resume.me retail.me return.me reveal.me review.me reviews.me revolution.me reward.me rey.me rezervisi.me rfid.me ricci.me richard.me riguarda.me rijesi.me ring.me ringtone.me rio.me riot.me rise.me rjesi.me robert.me roberts.me robinson.me rock.me rodriguez.me roll.me romance.me romano.me romero.me ronald.me rossi.me rss.me rubio.me rugby.me ruiz.me run.me rupee.me russo.me ryan.me saberi.me sacuvaj.me saginaw.me sagradi.me sahrani.me sailboat.me sakri.me sakupi.me sale.me saleslead.me saluda.me samantha.me samuel.me sanchez.me sandra.me sanjaj.me sans.me santos.me sap.me sara.me sarah.me sarmiraj.me saslusaj.me satellite.me satellitephone.me satelliteradio.me savannah.me save.me savetuj.me savjetuj.me say.me scanner.me scegli.me schmidt.me schmitt.me schmitz.me schneider.me school.me schulze.me schwarz.me science.me scientist.me scooter.me scooters.me scores.me scott.me scouts.me screen.me screw.me scrivia.me scrooge.me sean.me searchengine.me seattle.me secondo.me secret.me security.me securitysystem.me see.me seed.me seek.me seem.me sell.me send.me sendflowers.me

    seniors.me senti.me separate.me serve.me server.me service.me services.me set.me settle.me settlement.me seven.me sex.me sexeducation.me sexmovie.me sexo.me sexy.me shake.me shall.me shannon.me share.me sharks.me shawn.me shelby.me shoe.me shoes.me shoot.me shop.me shoppers.me shopping.me shoppingcart.me should.me shout.me show.me shut.me shvati.me simbolizuj.me simon.me simphaty.me simuliraj.me sin.me since.me sinceramente.me sing.me singapore.me single.me singles.me singlesonline.me sisaj.me sit.me sitehosting.me six.me skin.me skini.me skoluj.me skrati.me skupi.me skupljaj.me skuvaj.me slazi.me sleep.me slikaj.me slimming.me slomi.me slusaj.me smile.me smith.me smoking.me smrvi.me sms.me snimi.me snizi.me soapoperas.me soccer.me soccertv.me sofa.me sofas.me software.me soloper.me some.me soon.me sophia.me sort.me sound.me source.me southbend.me spakuj.me spali.me spam.me spamfilter.me spamuj.me spank.me spari.me spark.me spasi.me speak.me speaker.me speedtrap.me spend.me spices.me spicy.me spill.me spoji.me spoof.me sport.me sportinggoods.me sports.me sportsbook.me sportscar.me spreci.me sprijatelji.me sprijeci.me spring.me sprjeci.me spusti.me spyware.me stacey.me stacy.me staffing.me stampaj.me stand.me start.me state.me stay.me std.me steal.me steel.me stekni.me stephanie.me stephen.me steve.me steven.me stick.me stisni.me stocks.me stole.me stop.me storage.me store.me stream.me streaming.me streljaj.me strijeljaj.me strike.me strip.me striptease.me strjeljaj.me study.me stuff.me stvori.me sub.me subscribe.me subscription.me succeed.me suck.me suena.me suffer.me suggest.me suit.me summer.me supernatural.me suplica.me supply.me support.me suppose.me survive.me susan.me svezi.me sydney.me symbol.me table.me tablet.me tabletpc.me tajmahal.me take.me takeaway.me takeout.me talk.me tammy.me tax.me taxi.me taxlawyer.me taylor.me teach.me team.me tease.me technology.me teen.me teenmodels.me tel.me telco.me tele.me telecom.me telefoniraj.me telemarketing.me telephone.me television.me tell.me templates.me ten.me tend.me termlife.me territory.me test.me text.me textile.me textiles.me thank.me themovie.me theway.me think.me thisis.me thomas.me thompson.me three.me through.me throughout.me throw.me tickets.me till.me time.me times.me timothy.me tina.me tipo.me tires.me tit.me titanium.me tits.me toca.me today.me todd.me toga.me tomorrow.me tone.me tonight.me tonya.me tool.me tools.me top.me touch.me tourism.me tourist.me tournaments.me tours.me tow.me toward.me town.me townhall.me toy.me toys.me tra.me track.me tractors.me tracy.me trade.me traduze.me traffic.me train.me training.me tranne.me travelindia.me traveling.me travis.me trazi.me treat.me treatmentcenters.me trees.me treniraj.me tresni.me truck.me trucks.me trust.me try.me tryst.me tune.me tunes.me turn.me tutto.me tuttodi.me tuttoper.me tuxedorental.me two.me tyler.me uae.me ubrizgaj.me uci.me udahni.me udaj.me udalji.me udari.me udavi.me udruzi.me udvostruci.me ugrabi.me uhapsi.me uhvati.me ujedini.me ukljuci.me ukloni.me uklopi.me ukradi.me ukrasi.me ukrcaj.me ukrsti.me ulovi.me ulozi.me umnozi.me umrezi.me unapredi.me unaprijedi.me unclesam.me under.me underneath.me understand.me unesi.me unitedkingdom.me united-kingdom.me unitedstates.me united-states.me university.me unovci.me until.me upali.me upari.me upecaj.me upisi.me upitaj.me uplasi.me uplati.me upon.me uporedi.me upoznaj.me upozori.me uprljaj.me upropasti.me uputi.me urami.me uredi.me uruguay.me usa.me use.me used.me usedcar.me usimmigration.me uspassport.me ustedi.me usvoji.me utesi.me utjesi.me utopi.me utopli.me uvredi.me uvrijedi.me uvuci.me uzbudi.me uzbuni.me uzdigni.me uzmi.me uznemiravaj.me uznemiri.me vacation.me valentine.me vancouver.me vanessa.me vans.me vcd.me vegan.me veiling.me vende.me venture.me venturecapital.me vezbaj.me vezi.me via.me victoria.me videagames.me video.me videocds.me videoproduction.me videosgratis.me vienida.me vip.me virtual.me visit.me visita.me vitamins.me vive.me vjezbaj.me vodi.me vodka.me voiceoverip.me voip.me voipphone.me voipservice.me voli.me vota.me vote.me votefor.me voyuer.me vozi.me vpn.me vuci.me wager.me wagner.me wait.me walk.me walker.me walkers.me walsh.me walter.me want.me wanted.me war.me warehouse.me warez.me warn.me warranty.me was.me wash.me washingmachine.me washington.me watch.me way.me wealth.me wear.me weather.me web.me webconferencing.me webdesign.me webdevelopment.me weber.me webhost.me webhosting.me webhostingservice.me website.me websitehosting.me wedding.me weddinggift.me wendy.me werner.me west.me wet.me white.me who.me wholesale.me wifelover.me wifi.me wild.me will.me william.me williams.me wilson.me win.me wind.me wine.me wines.me winter.me wire.me wireless.me wirelessphone.me wish.me with.me within.me without.me wolf.me women.me wonder.me wood.me work.me workflow.me worry.me worship.me would.me wrestling.me wright.me write.me xmas.me xxx.me xxxmovie.me yard.me yearbook.me yoga.me yonkers.me you2.me youare.me young.me zabavi.me zabelezi.me zabiljezi.me zabrani.me zabrini.me zachary.me zacrveni.me zadovolji.me zadrzi.me zaduzi.me zagrij.me zagrli.me zagusi.me zahtevaj.me zahtijevaj.me zahtjevaj.me zainteresuj.me zakljucaj.me zakoci.me zakopaj.me zakucaj.me zalepi.me zalijepi.me zaljepi.me zameni.me zamijeni.me zamjeni.me zamoli.me zamotaj.me zaokruzi.me zapali.me zapamti.me zapecati.me zapisi.me zapocni.me zaposli.me zapostavi.me zaradi.me zasadi.me zaseni.me zasijeni.me zasjeni.me zasluzi.me zastiti.me zastupaj.me zatvori.me zaustavi.me zavedi.me zavezi.me zavoli.me zavrsi.me zazidaj.me zblizi.me zezni.me zidaj.me zimbabwe.me zimmermann.me zloupotrebi.me zloupotrijebi.me zloupotrjebi.me zovi.me zovni.me zzz.me

  • grita.me grli.me group.me grouphealth.me grow.me grupisi.me guarda.me guest.me guide.me guides.me gurni.me guru.me gusta.me guy.me h1b.me h1sponsorship.me habits.me habla.me hack.me hailey.me hal.me haley.me hall.me handicraft.me handjob.me handle.me handloom.me hannah.me hanover.me happen.me happy.me harddrive.me hardware.me harris.me hate.me have.me head.me health.me healthcare.me healthfood.me healthinsurance.me hear.me heart.me heather.me heaven.me hebrew.me hedonism.me hell.me help.me helpdesk.me hernandez.me herrmann.me hide.me highway.me hill.me history.me hit.me hoffmann.me hold.me home.me homeforeclosures.me homeimprovement.me homeinsurance.me homeloan.me homemortage.me homepc.me homes.me hometheater.me honeymoon.me hongkong.me hook.me hope.me horsesupplies.me hospital.me hospitals.me host.me hosting.me hot.me hotdate.me hotel.me hoteldeals.me hotelmanagement.me hotels.me hotproperty.me house.me houses.me housing.me huge.me hughes.me hunter.me hurt.me iab.me identify.me iglesias.me ignorisi.me imagine.me imaj.me imenuj.me immigration.me impotence.me improve.me inc.me include.me incorporate.me increase.me indicate.me infinite.me influence.me inform.me informa.me informationtechnology.me informisi.me infotech.me infrastructure.me inn.me innovations.me ins.me instantapprovals.me insurance.me intend.me interesuj.me internethosting.me internetservice.me internettelephony.me into.me introduce.me invention.me investment.me invita.me invite.me involve.me ipphone.me iqtest.me iran.me isaac.me isabella.me isaiah.me iskljuci.me iskoristi.me isnot.me isp.me ispeci.me ispeglaj.me ispitaj.me isplati.me isporuci.me isprati.me isprazni.me isprogramiraj.me isprzi.me istopi.me istrazi.me itindustry.me itjob.me itjobs.me itnews.me ivanov.me izaberi.me izazovi.me izbegni.me izbjegni.me izbrisi.me izbroj.me izdaj.me izglancaj.me izgradi.me izgubi.me izleci.me izlijeci.me izljeci.me izmeni.me izmeri.me izmesaj.me izmijeni.me izmijesaj.me izmjeni.me izmjeri.me izmjesaj.me izmrvi.me iznajmi.me iznenadi.me izneveri.me iznevjeri.me izostavi.me izracunaj.me izravnaj.me izrezi.me izvagaj.me izvezbaj.me izvezi.me izvini.me izvinite.me izvjezbaj.me izvozi.me izvrsi.me izvuci.me jack.me jackson.me jacob.me jail.me james.me jamie.me japan.me japanesecar.me jasmin.me jasmine.me jason.me jeffrey.me jennifer.me jeremy.me jesse.me jessica.me jet.me jetfares.me jewelers.me jewelry.me jimenez.me jmm.me job.me joblisting.me jobplacement.me jobsearch.me john.me johnson.me join.me jointventure.me jokes.me jonathan.me jones.me jordan.me jose.me joseph.me joshua.me journal.me joystick.me julia.me julie.me jump.me justice.me justin.me kaitlyn.me karaoke.me karen.me karma.me katherine.me kathryn.me katie.me kayla.me keep.me keith.me kelly.me kennedy.me kenneth.me kevin.me key.me kick.me kid.me kids.me kill.me kimberly.me king.me kinkygirls.me kinkysex.me kiss.me kit.me klein.me klikni.me knock.me know.me koch.me kodiraj.me kontaktiraj.me kopiraj.me krause.me kristen.me kristin.me kupi.me kuvaj.me kyle.me lab.me lamps.me language.me laptop.me large.me laser.me lasereye.me lasers.me last.me laugh.me laundromats.me laura.me lauren.me laurent.me law.me lawyer.me lay.me lazi.me lead.me lean.me learn.me learning.me leather.me leave.me lefebvre.me legal.me lehmann.me lend.me leroy.me lesbo.me let.me lewis.me liability.me licenseplates.me licitiraj.me lick.me lie.me life.me lifeinsurance.me lifts.me like.me limit.me limited.me lindsay.me lindsey.me line.me link.me linux.me lips.me lisa.me list.me listen.me live.me ljubi.me llama.me llc.me llora.me loan.me loans.me local.me localdirectory.me locals.me locate.me lofts.me log.me logan.me login.me london.me look.me lookat.me looks.me lopez.me lori.me losangeles.me lose.me lottery.me love.me lover.me loves.me luck.me luke.me lunch.me lust.me lynch.me lyrics.me macau.me machine.me machinetools.me mackenzie.me madison.me magazine.me maier.me mailbox.me mailinglist.me mails.me major.me make.me makemoney.me males.me mall.me malta.me manage.me mangas.me manhunt.me manufacture.me map.me mapa.me maps.me maria.me marino.me mark.me market.me marketing.me marketresearch.me markiraj.me marry.me martin.me martina.me martinez.me martins.me mary.me mathematics.me matrimony.me matter.me matthew.me max.me may.me mayer.me mazi.me mccarthy.me mean.me measure.me mechantaccount.me media.me medication.me medicine.me meds.me meet.me megan.me melbourne.me melissa.me member.me men.me menjaj.me mention.me mercier.me mercury.me message.me messenger.me meyer.me mia.me michael.me michelle.me microwave.me might.me mijenjaj.me milf.me miller.me mind.me mine.me mini.me mining.me minister.me mira.me miss.me mitchell.me mjenjaj.me mms.me mobi.me mobile.me mobilefone.me mobilephone.me moli.me molina.me mom.me money.me moneylenders.me moneytransfers.me monica.me monitor.me monster.me moore.me morgan.me mortage.me mortgage.me mother.me move.me movers.me movie.me movielist.me movierentals.me movies.me moving.me mozambique.me mp3.me mp3player.me mp3store.me mrzi.me muci.me mueller.me murphy.me murray.me music.me musicdownload.me musician.me musicsearch.me musicstore.me musicvideo.me must.me myblog.me myfinance.me nabavi.me nacrtaj.me nadji.me nagomilaj.me naked.me naljuti.me name.me names.me nametni.me nanny.me napadni.me napisi.me naplati.me napomeni.me napravi.me napumpaj.me napuni.me napusti.me naruci.me naslikaj.me nasty.me natalie.me nathan.me nation.me national.me native.me naturalbeauty.me naturalgas.me nauci.me naughty.me nav.me navarro.me nazovi.me near.me necktie.me need.me negiraj.me neguj.me nelson.me netid.me netpoker.me nets.me network.me neumann.me new.me newcar.me newlyweds.me newmovie.me newmusic.me news.me newsgroup.me newyork.me next.me nicholas.me nicole.me night.me nin.me nine.me njeguj.me noah.me nom.me non.me nosi.me not.me note.me notebooks.me notice.me now.me nuclear.me nude.me nutrition.me obavesti.me obavezi.me obavijesti.me obavjesti.me obelezi.me obesi.me obesity.me obezbedi.me obezbijedi.me obezbjedi.me obidji.me obilazi.me obiljezi.me objasni.me objesi.me obmani.me oboji.me obori.me obracunaj.me obradi.me obradjuj.me obrazuj.me obrien.me obrisi.me obrukaj.me observa.me obtain.me obuci.me ocaraj.me occur.me ocean.me oceni.me ocijeni.me ocisti.me ocjeni.me oconnor.me odbaci.me odbrani.me odglumi.me odia.me odigraj.me odlozi.me odmeri.me odmjeri.me odobri.me odoherty.me odslusaj.me odstampaj.me odvedi.me odvoji.me off.me offer.me office.me officechair.me officespace.me offshore.me ofrece.me oggi.me ogovaraj.me ogradi.me ogranici.me ohrabri.me oil.me okiti.me okruzi.me okupaj.me olivia.me olvida.me ometaj.me one.me oneill.me online.me onlinedating.me onlinedegree.me onlineflowers.me onlinepersonals.me onto.me opeci.me open.me opinion.me opisi.me opljackaj.me opravdaj.me oprosti.me opt.me option.me orange.me oraspolozi.me order.me organiza.me orgasm.me orgs.me ortega.me ortiz.me osamari.me oseti.me osiguraj.me osisaj.me osjeti.me oslabi.me oslobodi.me osnuj.me ospori.me osposobi.me osramoti.me ostavi.me osteti.me osudi.me osullivan.me osusi.me osvetli.me osvijetli.me osvjetli.me osvoji.me otkljucaj.me otkoci.me otkrij.me otkupi.me otopi.me otvori.me ought.me our.me out.me outside.me outsource.me oven.me over.me ovlasti.me own.me oye.me

  • 2008 IT 工资行情 at 2008年07月17日

    跳槽请看~~哈哈

  • CMing 于 2008-7-17 09:42 发表
    oracle,超牛的公司. 抓紧时间学习! [/quote]

    我就知道这个公司给的 money 多,嘿嘿

  • ClearCase 与配置管理 at 2008年07月17日

    CMing 于 2008-7-17 09:36 发表
    第一部分配置管理概述

    什么是配置管理 为什么要进行配置管理 配置管理概念 配置管理内容

    第二部分:clearcase 与配置管理

    配置管理需要协助优秀的工具来实现 clearcase 基本概念 clearcase 主要功能介绍 clearcase 在 ... [/quote]

    感谢我什么啊啊,我也要赶紧学习

  • 北京甲骨文啊

    不错的职位

  • Digg 还是多么强大的~

  • 会员积分和金钱如何计算? at 2008年07月16日

    哈哈哈,好,这个设置一下就好了 我会注意这个问题。立刻就弄。

  • 问个问题? at 2008年07月16日

    第一问题的答案是:YES

    是啊,我最近正在整理资料,陆续把我收集的资料上传上来。

    从 scmroad 的历史,你就可以看出来,他还是一个新生儿,需要时间去成长

    谢谢你的支持了。:)

  • 强大的 CM, 强大的 CMing at 2008年07月16日

    好,谢谢啦。

    你也可以上传到本站的 ftp,不过那个 ftp 只能一个人同时访问,而且只能一个线程。。。。

  • 强大的 CM, 强大的 CMing at 2008年07月16日

    牛人啊,牛的不行,有机会多向你请教

  • 造句 at 2008年07月16日

    用 马上 造句

    小朋友写: 我骑在马上。    

  • clearcase 的文章太少了! at 2008年07月16日

    CMing 于 2008-7-16 11:25 发表
    呵呵 算不上有多熟悉,只是一直在使用而已. [/quote] 好,那就和我一起来做嘛

  • 在用户数据库之间移动数据(不,不仅仅是您)

    这几年来,我经常遇到这样的情况:一些 IBM Rational FAQ 引发新手犯错误。经验欠缺的 ClearQuest Administrators 将会在以下两种情景下开始配置 ClearQuest:

    “我们对于每一个项目都将从用户数据库起步。如果管理层决定将这些数据库同一个企业级用户数据库(基于报告或者数据管理方面的原因)结合起来将会有价值的话,那么我们就会将它们结合起来。”
    或者

    “我们对于所有项目都将从同一个用户数据库起步。如果该项目要求特定的定制,或者该数据库变得太笨拙了,那么我们就创建一个为项目定做的用户数据库,并且从用户数据库中引入相应的数据。”
    这两种理由充分的选项都是基于同一件事:在不同的 ClearQuest 用户数据库之间可以轻易的移动数据。如果了解到该过程有时会提出挑战的话,您就会为您的机构设定一个更加合理的预期。

    使用所提供的 ClearQuest Import 和 Export 功能,您就肯定可以从一个用户数据库导出数据(即使是基于一个查询),并且将其导入到另一个用户数据库中(即使这些用户数据库是基于不同的图表的)。只要在源和目的数据库中都支持您所要求的源和目的域,该导入工具就将支持它。

    然而,和许多情形中所出现的情况一样,细节最令人头疼。如果您拥有一个多行的域——例如 Description(请见图 4)——多行字符串中的每一个回车符都扮演了一个记录分隔符的角色,这就意味着源数据库中所呈现的域的格式最终和目的数据库中的不一样。

    图 4: 使用导入向导可以很容易的完成映射。允许数据被导入所要求的格式需要计划和测试。

    请记住,由于记录 ID 是系统创建的域,所以无法在用户数据库之间移植 ID。为了缓解这一矛盾,您可以创建一个新的域,例如可将其称作 old_id,并且从源用户数据库中将原来的 ID 导入到目的数据库中,同时将所有相关的信息也一并导入。参考信息域同样需要在不同数据库之间加以区别。如果我的登录 ID 在源数据库中是 giliod 而在目的数据库中是 dg1111,那么诸如拥有者和提交者之类的参考信息域就将变得没有意义了。

    在不同的用户数据库之间移植数据当然是可以做到的,但是做起来会很痛苦。最好事先与出资方就数据的限制和变更问题进行沟通(您的 Notes_Log 域此刻看起来毫无用处),并且执行若干数据导入的试验来确保您拥有所有获得一个可以接受的结果的格式变更的文档。

    回页首

    避免掉入陷阱:工具只反应过程,但并不驱动它

    IBM Rational Unified Process® (RUP®) 声称,“Tool Specialist” 的角色就是负责在项目中支持工具,包括选择和获得工具;配置和设置工具;以及检验工具的工作。实际上,ClearQuest 管理员就是在变更管理系统中扮演了 Tool Specialist 的角色。

    在大多数情况下,服务于一个复杂的变更管理系统的企业级配置的机构,最希望拥有设计和贡献该进程的利益相关者,该过程应当在工具中被反映出来。无论是不是一个正式的过程团队,Project Management Office 或者 Quality Assurance 部门,都经常有各种将同变更管理系统发生交互的用户。

    您应当避免尝试设计或者重新设计您的变更管理过程;相反,您应当用该工具执行您预先定义的过程。我所见过的最好的方法,就是您按照配置其他业务应用程序的方式来配置 ClearQuest。对该应用程序的需求将从业务利益相关者流到执行操作的开发团队。

    我在若干场合所采用的一种有趣的方式是,实际利用 IBM Rational Suite 来配置 IBM 工具。在 RequisitePro 中将您的缺陷和增强要求集中起来。使用一个基于企业级图表的用户数据库来创建 Enhancement Requests,并且对系统的缺陷加以记录。这样的话,您就成为过程机构中的一员,并且任何使其进入 ClearQuest 的需求都被记录在 RequisitePro 中。

    即使在一个不太正式的环境中,一个包含业务利益相关者的需求的 Excel 电子数据表也能够满足我们的要求。它提供了两个好处:一方面提供了您作为 ClearQuest 管理员所期望的清晰的方向,另一方面当 “为什么当您转移到 Approved 状态时需要 Owner 域?” 这一不可回避的问题提出时,它提供了到接合需求的回溯。通过记录完整的需求,您能够提供答案:“这是由 SOX 依从团队指定的需求,对于他们的报告来说需要这些数据。”

    回页首

    隔离 ClearQuest 计划开发

    我的十项提示的最后一项是:伴随频繁的图表变更而来的继承的问题。一位新手 ClearQuest 管理员也许在更新一个用户数据库到新的图表版本时(请见图 5),不会理会弹出的提示窗口。该窗口中显示:“该操作不能被撤销。请确认您已经备份了图表仓库和用户数据库。是否继续?”

    图 5: 请回答 “是”,因为如果您没有准备好的话,那么您的 ClearQuest 的实施将面临潜在的灾难。

    经验丰富的 ClearQuest 管理员每当网络在用户数据库升级期间出现 “小故障” 时都会被召回数次,也许是因为丢失了设计者客户端和数据库服务器之间的连接,或者是因为在升级期间他们的 Windows 系统出现 “蓝屏”。他们还会被迫寻找一名数据库管理员,要求他将图表和用户数据库恢复到其升级之前的状态。

    一种可行的解决方案是使用 ClearQuest Designer 所提供的 Test Database 功能。然而,这可能像是一位拉紧绳索的行人在没有网的情况下工作。如果出现任何问题,您就像是步履蹒跚的高高走在没有安全网保护的中心环之上,因为该方法掩盖了一个关键的概念。如果您将您的当前生产图表同一个测试数据库连接起来,对图表进行变更并且将其应用到测试数据库中,您就将在其被用于生产环境的同时编辑您的生产图表。

    这同当赛车绕圈行驶在赛道上时变换其轮胎的情景十分相似。当更新一个数据库时,您将收到如图 5 所示的警告消息。您可能会问:如果在升级时出现图表 “不一致状态” 的问题会怎么样?我的生产用户数据库没有问题,它仅仅影响我的测试数据库,不是么?最好的答案就是:永远不会。由于图表和用户数据库之间的复杂关系,图表的变坏——无论您在升级(测试与否)哪一个用户数据库——都可能要求图表的恢复,这又将要求所有相连接的数据库(包括生产数据)的恢复来保持一致性。

    除了修改生产图表所带来的问题之外,如果您的图表利用了动态列表或者无状态列表,那么您也许还要花费大量的时间用于在生产服务器上重新下载数据到一个新创建的空的测试数据库。如果您的图表异常复杂的话,您将到达一个更高层的上限,而且 Microsoft Access 将不再是一个快速创建测试数据库的选项。

    一种行之有效的方法是,利用 ClearQuest 所提供的命令行指令 “installutil” 来创建您将会修订的图表和用户数据库的备份。软件开发人员通常将他们的开发努力隔离在不同的物理系统或者实例(开发、系统测试、用户容忍测试)上,同样地,该方法允许您在隔离状态下开发您的 ClearQuest 图表变更。

    一旦图表变更被验证,您就能够使用 “cqload” 命令导出图表的修订版本,并且执行一个受控的导入到生产中。这样,您就能够以环境中其他任何生产系统相同的控制级别来计划升级操作。您可以联系您的数据库管理员,要求一个备份,通告您的用户中断操作的消息,并且生产发布提示那些可能会受到影响的终端用户关于变更的详细信息。

    通过使用该方法来更新 ClearQuest 图表(以及相关联的用户数据库),当您采取这一措施来更新数据库并且收到令人不安的警告消息的时候,请不必担心,您将拥有一套十五分钟前的安全备份,而且在一些无法预料的事件扰乱升级操作时,您只需请求 Database Administrator 来恢复图表和用户数据库的备份即可。

    参考资料

    学习

    您可以参阅本文在 developerWorks 全球网站上的 英文原文。

    您可以参阅 Rational Edge 电子月刊中文版 的其他文章。

    讨论

    参与论坛讨论。

    现在开办了一个特别为 Rational Edge 的文章创办的 新论坛,现在您就可以分享您对本文或本期杂志或以前杂志中的其他文章的想法。阅读世界各地您的同行们所说的内容,生成您自己的讨论,或者加入正在进行的讨论。单击这里开始。

    全球 Rational 用户组社区

    关于作者

    Daniel Gilio 是 Number Six 软件的首席咨询师,Number Six 软件是 IBM 的业务合作伙伴,特别是在 IBM Rational 工具方面。他有为众多财富 100 强企业,使用 ClearCase、ClearQuest 或 UCM,以及 RequisitePro 进行方案实施的经验。 [url]http://www.ibm.com/developerworks/cn/rational/oct07/gilio//url][

  • 为什么没有 clearquest 版快? at 2008年07月15日

    谢谢你的建议
    done~

  • 小付好节约 at 2008年07月15日

    zoe 于 2008-7-15 22:17 发表
    小学拼音咋学的哦 qiao 是缩写成 c 吗? [/quote] 。。。。

  • 给 SCMroad 捧个场! at 2008年07月15日

    恩,恩,谢谢,谢谢

  • clearcase 的文章太少了! at 2008年07月15日

    yes,

    首先我积累的就比较少,如果你对 cc 比较了解,欢迎加入我们啊。

  • [url]http://svnbook.red-bean.com/url][ subversion 红宝书的中文版本

  • 4.2.4 建立代码库

    在服务器 D:\svn 目录下,建立 arm 代码库,命令如下:

    D:\svn>svnadmin create arm

    在客户机 F:\temp 目录下,建立好上述目录结构

    如果是使用 svnserve 作为你的 Subversion 服务器的朋友,可以使用命令 F:\temp>svn import arm svn://192.168.0.1/arm 导入整个目录结构。

    这条指令的精确意思是,将 arm 目录下面的所有东西,导入到那个名叫 arm 的代码库中去。如果你不指定源目录,则 svn 会默认将当前目录作为源目录。

    4.2.5 测试

    在服务器上,打开一个 DOS Prompt 窗口,输入如下指令:

    svn co svn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117

    我们应该得到如下目录结构:

    arm

    ├─diary

    │ └─headquarters

    ├─ref

    └─temp

    然后修改 ref 目录下任意文件并提交,服务器将会报错 “Access denied”

    4.3 使用 Apache 作为 Subversion 服务器

    4.3.1 编辑代码库基础配置文件

    你需要在 httpd.conf 中添加类似如下的配置段:

    DAV svn

    # 我的代码库们,全部都放在 d:\svn_repository 这个目录下面

    SVNParentPath d:\svn_repository

    # 禁止未授权用户的访问

    Require valid-user

    # 使用密码系统验证用户

    AuthType Basic

    AuthName "my Subversion Server"

    AuthUserFile d:\svn_repository\passwd.conf

    # 开启目录授权功能

    AuthzSVNAccessFile d:\svn_repository\authz.conf

    4.3.2 管理用户帐号

    4.3.3 建立目录访问权限控制文件

    4.3.4 建立代码库

    4.3.5 测试

    5 深入

    本章将详细介绍前一章所涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义。

    这里首先要注意一点,任何配置文件的有效配置行,都不允许存在前置空格,否则程序会无法识别。也就是说,如果你直接从本文的纯文本格式中拷贝了相关的配置行过去,需要手动将前置的 4 个空格全部删除。当然了,如果你觉得一下子要删除好多行的同样数目的前置空格是一件苦差使,那么也许 UltraEdit 的 “Column Mode” 编辑模式,可以给你很大帮助呢。

    5.1 svnserve.conf

    arm\conf\svnserve.conf 文件,是 svnserve.exe 这个服务器进程的配置文件,我们逐行解释如下。

    首先,我们告诉 svnserve.exe,用户名与密码放在 passwd.conf 文件下。当然,你可以改成任意的有效文件名,比如默认的就是 passwd:

    password-db = passwd.conf

    接下来这两行的意思,是说只允许经过验证的用户,方可访问代码库。 那么哪些是 “经过验证的” 用户呢?噢,当然,就是前面说那些在 passwd.conf 文件里面持有用户名密码的家伙。这两行的等号后面,目前只允许 read write none 三种值,你如果想实现一些特殊的值,比如说 “read-once” 之类的,建议你自己动手改源代码,反正它也是自由软件:

    anon-access = none

    auth-access = write

    接下来就是最关键的一句呢,它告诉 svnserve.exe,项目目录访问权限的相关配置是放在 authz.conf 文件里:

    authz-db = authz.conf

    当然,svn 1.3.2 引入本功能的时候,系统默认使用 authz 而不是 authz.conf 作为配置文件。不过由于鄙人是处女座的,有着强烈的完美主义情结,看着 svnserve.conf 有后缀而 passwd 和 authz 没有就是不爽,硬是要改了。

    5.2 authz.conf 之用户分组

    arm\conf\authz.conf 文件的配置段,可以分为两类, [group] 是一类,里面放置着所有用户分组信息。其余以 [arm:/] 开头的是另外一类,每一段就是对应着项目的一个目录,其目录相关权限,就在此段内设置。

    首先,我们将人员分组管理,以便以后由于人员变动而需要重新设置权限时候,尽量少改动东西。我们一共设置了 5 个用户分组,分组名称统一采用 g_ 前缀,以方便识别。当然了,分组成员之间采用逗号隔开:

    [groups]

    任何想要查看所有文档的非本部门人士

    g_vip = morson

    经理

    g_manager = michael

    北京办人员

    g_beijing = scofield

    上海办人员

    g_shanghai = lincon

    总部一般员工

    g_headquarters = rory, linda

    小秘,撰写文档

    g_docs = linda

    注意到没有, linda 这个帐号同时存在 “总部” 和 “文档员” 两个分组里面,这可不是我老眼昏花写错了,是因为 Subversion 允许我这样设置。它意味着,这个家伙所拥有的权限,将会比他的同事 rory 要多一些,这样的确很方便。具体多了哪些呢?请往下看!

    5.3 authz.conf 之项目根目录

    接着,我们对项目根目录做了限制,该目录只允许 arm 事业部的经理才能修改,其他人都只能眼巴巴的看着:

    [arm:/]

    @g_manager = rw

    • = r

    [arm:/] 表示这个目录结构的相对根节点,或者说是 arm 项目的根目录。【在这儿添加对项目目录与此处配置的详细解释,包括 [/] 格式 】

    这里的 @ 表示接下来的是一个组名,不是用户名。你当然也可以将 @g_manager = rw 这一行替换成 michael = rw ,而表达的意义完全一样。

    • 表示 “除了上面提到的那些人之外的其余所有人”,也就是 “除了部门经理外的其他所有人”,当然也包括总经理那个怪老头

    • = r 则表示 “那些人只能读,不能写”

    5.4 authz.conf 之项目子目录

    然后,我们要给总部人员开放日志目录的读写权限:

    [arm:/diary/headquarters]

    @g_manager = rw

    @g_headquarters = rw

    @g_vip = r

    • =

    我敢打赌,设计 svn 的家伙们,大部分都是在 unix/linux 平台下工作,所以他们总喜欢使用 / 来标识子目录,而完全忽视在 MS Windows 下是用 \ 来做同样的事情。所以这儿,为了表示 arm\diary\headquarters 这个目录,我们必须使用 [arm:/diary/headquarters] 这样的格式。

    这里最后一行的 * = 表示,除了经理、总部人员、特别人士之外,任何人都被禁止访问本目录。这一行是否可以省略呢?【若省略本行,其他人是否可以从 arm/diary 的 * = r 权限上获得对 arm/diary/headquarters 目录的 r 权限呢】

    之所以这儿需要将 @g_vip = r 一句加上,就是因为存在上述这个解释。如果说你没有明确地给总经理授予读的权力,则他会和其他人一样,被 * 给排除在外。

    如果众位看官中间,有谁玩过防火墙配置的话,可能会感觉上述的配置很熟悉。不过这里有一点与防火墙配置不一样,那就是各个配置行之间,没有 先后顺序 一说。也就是说,如果我将本段配置的 * = 这一行挪到最前面,完全不影响整个配置的最终效果。

    请注意这儿,我们并没有给 arm\diary 目录设置权限,就直接跳到其子目录下进行设置了。我当然是故意这样的,因为我想在这儿引入 “继承” 的概念。

    权限具备继承性 任何子目录,均可继承其父目录的所有权限,除非它自己被明确设置了其他的权限。也就是说,在 arm 目录设置权限后, arm\diary 目录没有进行设置,就意味着它的权限与 arm 目录一样,都是只有经理才有权读写,其他人只能干瞪眼。

    【 * = 是否可以省略】【用例子引入覆盖】【单用户权限的继承问题】【父目录权限继承与全面覆盖问题】

    现在来看看

    好了,我们现在掌握了 “继承” 的威力,它让我们节省了不少敲键盘的时间。可是现在又有一个问题了,

    属性具备覆盖性质 子目录若设置了属性,则完全覆盖父目录。

    5.5 authz.conf 的其他注意点

    父目录的 r 权限,对子目录 w 权限的影响

    把这个问题专门提出来,是因为在 1.3.1 及其以前的版本里面,有个 bug,即为了子目录的写权限,项目首目录必须具备读权限。因此现在使用了 1.3.2 版本,就方便了那些想在一个代码库存放多个相互独立的项目的管理员,来分配权限了。比如说央舜公司建立一个大的代码库用于存放所有员工日志,叫做 diary,而 arm 事业部只是其中一个部门,则可以这样做:

    [diary:/]

    @g_chief_manager = rw

    [diary:/arm]

    @g_arm_manager = rw

    @g_arm = r

    这样,对于所有 arm 事业部的人员来说,就可以将 svn://192.168.0.1/diary/arm 这个 URL 当作根目录来进行日常操作,而完全不管它其实只是一个子目录,并且当有少数好奇心比较强的人想试着 checkout 一下 svn://192.168.0.1/diary 的时候,马上就会得到一个警告 “Access denied”,哇,太酷了。

    默认权限

    如果说我对某个目录不设置任何权限,会怎样?马上动手做个试验,将:

    [diary:/]

    @g_chief_manager = rw

    改成:

    [diary:/]

    @g_chief_manager = rw

    这样就相当于什么都没有设置。在我的 svn 1.3.2 版本上,此时是禁止任何访问。也就是说,如果你想要让某人访问某目录,你一定要显式指明这一点。这个策略,看起来与防火墙的策略是一致的。

    只读权限带来的一个小副作用

    若设置了:

    [arm:/diary]

    • = r

    则 Subversion 会认为,任何人都不允许改动 diary 目录,包括删除、 改名 ,和 新增 。

    也就是说,如果你在项目初期创建目录时候,一不小心写错目录名称,比如因拼写错误写成 dairy,以后除非你改动 authz.conf 里面的这行设置,否则无法利用 svn mv 命令将错误的目录更正。

    6 改进

    6.1 对中文目录的支持

    上午上班的时候,Morson 来到 Michael 的桌子前面,说道:“你是否可以将我们的北京办、上海办目录,改成用中文的,看着那些拼音我觉得很难受?” Michael 心想,还好这两天刚了解了一些与 unicode 编码相关的知识,于是微笑地回答:“当然可以,你明天下午就可以看到中文目录名称了。”

    使用 svn mv 指令,将原来的一些目录改名并 commit 入代码库,改名后的目录结构如下:

    arm

    ├─工作日志

    │ ├─总部人员

    │ ├─北京办

    │ └─上海办

    ├─公司公共文件参考目录

    └─临时文件存放处

    修改代码库的 authz.conf 文件,将相应目录逐一改名

    使用 UltraEdit 将 authz.conf 文件转换成不带 BOM 的 UTF-8 格式

    将配置文件转换成 UTF-8 格式之后,Subversion 就能够正确识别中文字符了。但是这里需要注意一点,即必须保证 UTF-8 文件不包含 BOM 。BOM 是 Byte Order Mark 的缩写,指 UNICODE 文件头部用于指明高低字节排列顺序的几个字符,通常是 FF FE ,而将之用 UTF-8 编码之后,就是 EF BB BF 。由于 UTF-8 文件本身不存在字节序问题,所以对 UTF-16 等编码方式有重大意义的 BOM,对于 UTF-8 来说,只有一个作用——表明这个文件是 UTF-8 格式。由于 BOM 会给文本处理带来很多难题,所以现在很多软件都要求使用不带 BOM 的 UTF-8 文件,特别是一些处理文本的软件,如 PHP、 UNIX 脚本文件等,svn 也是如此。

    目前常用的一些文本编辑工具中,MS Windows 自带的 “记事本” 里面,“另存为” 菜单保存出来的 UTF-8 格式文件,会自动带上 BOM 。新版本 UltraEdit 提供了选项,允许用户选择是否需要 BOM,而老版本的不会添加 BOM。请各位查看一下自己常用的编辑器的说明文件,看看它是否支持这个功能。

    利用 UltraEdit ,我们可以将 BOM 去掉。方法是,首先利用 “UTF-8 TO ASCII” 菜单将文件转换成本地编码,通常是 GB2312 码,然后再使用 “ASCII TO UTF-8(UNICODE Editing)” 来转换到 UTF-8 即可。

    7 参考文献

    Subversion 官方文档, [url]http://svnbook.red-bean.com/en/1.1/ch06s04.html#svn-ch-6-sect-4.4.2/url][

    Subversion 1.3 变更记录, [url]http://subversion.tigris.org/svn_1.3_releasenotes.html/url][

    Subversion FAQ, [url]http://subversion.tigris.org/faq.html/url][

    UTF-8 常见问题, [url]http://unicode.org/faq/utf_bom.html/url][

    8 历史轨迹

    2006.06.04, v0.1, 在 [url]http://iusesvn.com/bbs/url][ 首次发布

    2006.07.07, v0.4, 加入 [url]www.woodpecker.org.cn[/url] 的 OBP 项目

    [url]http://zhengxinxing.googlepages.com/The.Road.to.Subversion_authz.html/url][

    [url]http://swjr.blog.com.cn/archives/2006/TheRoadToSubversion1authz.shtml/url][

  • [font=宋体] 与 [/font] Apache Http Server [font=宋体] 的结合 [/font]

    [font=宋体] 通过 [/font] Http [font=宋体] 协议访问版本库是 [/font] Subversion [font=宋体] 的亮点之一。使用 [/font] Http [font=宋体] 协议意味着只需要打开浏览器,输入 [/font] URL [font=宋体] 即可轻松的浏览整个版本库。灵活通常带来复杂性,[/font] Http [font=宋体] 方式相对于 [/font] svnserve [font=宋体] 方式来说需要更多的配置。[/font]

    [font=宋体] 由于 [/font] Subversion [font=宋体] 需要版本化的控制,因此标准的 [/font] Http [font=宋体] 协议不能满足需求。要让 [/font] Apache [font=宋体] 与 [/font] Subversion [font=宋体] 协同工作,需要使用 [/font] WebDAV[font=宋体]([/font] Web [font=宋体] 分布式创作和版本控制)。[/font] WebDAV [font=宋体] 是 [/font] HTTP 1.1 [font=宋体] 的扩展,关于 [/font] WebDAV [font=宋体] 的规范和工作原理,可以参考 [/font] IETFRFC 2518[font=宋体]。[/font]

    [font=宋体] 为了使 [/font] Subversion [font=宋体] 与 [/font] dav [font=宋体] 模块通信,需要安装 [/font] mod_dav_svn [font=宋体] 插件,可以在 [/font] Subversion [font=宋体] 的安装目录中找到。将其拷贝到 [/font] Apache [font=宋体] 安装目录的 [/font] modules [font=宋体] 文件夹下。[/font][font=宋体] 接下来就是配置 [/font] Apache [font=宋体] 的 [/font] httpd.conf [font=宋体] 文件,让 [/font] Apache [font=宋体] 在启动的时候加载上述模块。[/font]

    [font=宋体] 需要添加的内容如下:[/font] LoadModuledav_module modules/mod_dav.so LoadModule dav_svn_modulemodules/mod_dav_svn.so

    DAV svn

    SVNPath /etc/svn/repos

    [font=宋体] 首先需要启用 [/font] dav_module[font=宋体],[/font][font=宋体] 然后加载 [/font] dav_svn_module[font=宋体]。[/font] Location [font=宋体] 标签指出访问的 [/font] URL [font=宋体] 以及在服务器上的实际位置。配置完毕后重新启动 [/font] Apache[font=宋体],[/font][font=宋体] 打开浏览器 [/font][font=宋体],[/font][font=宋体] 输入 [/font] http://[font=宋体] 服务器 [/font] IP/repos [font=宋体] 将会看到如下画面 [/font][font=宋体]:[/font]

    [font=宋体] 图 [/font] 1. [font=宋体] 一个初始版本库 [/font]

    [font=宋体] 这表示 [/font] Apache [font=宋体] 的 [/font] dav_svn [font=宋体] 模块已经可以正常工作了。用户可以使用任何一种 [/font] Subversion [font=宋体] 的客户端通过 [/font] Http [font=宋体] 协议访问你的版本库。[/font]

    [font=宋体] 如果想要指定多个版本库,可以用多个 [/font] Location [font=宋体] 标签,也可以使用 [/font] SVNParentPath [font=宋体] 代替 [/font] SVNPath[font=宋体],例如在 [/font] /etc/svn [font=宋体] 下有多个版本库 [/font] repos1[font=宋体],[/font] repos2 [font=宋体] 等等,用如下方式指定:[/font]

    DAV svn

    SVNParentPath /etc/svn

    "SVNParentPath/etc/svn" [font=宋体] 表示 [/font] /etc/svn [font=宋体] 下的每个子目录都是一个版本库。可以通过 [/font] http://[font=宋体] 服务器 [/font] IP/repos/repos1[font=宋体],[/font] http://[font=宋体] 服务器 [/font] IP/repos/repos2 [font=宋体] 来访问。[/font]

    [font=宋体] 现在你的版本库任何人都可以访问,并且有完全的写操作权限。也就是说任何人都可以匿名读取,修改,提交,以及删除版本库中的内容。显然大部分场合这是不符合需求的。那么如何进行权限设置呢,[/font] Apache [font=宋体] 提供了基本的权限设置:[/font]

    [font=宋体] 首先需要创建一个用户文件。[/font] Apache [font=宋体] 提供了一个工具 [/font] htpasswd[font=宋体],用于生成用户文件,可以在 [/font] Apache [font=宋体] 的安装目录下找到。具体使用方法如下:[/font] htpasswd etc/svn/passwordfile username

    [font=宋体] 如果 [/font] passwordfile [font=宋体] 不存在,可以加上 [/font] -c [font=宋体] 选项让 [/font] htpasswd [font=宋体] 新建一个。创建好的文件内容是用户名加上密码的 [/font] MD5 [font=宋体] 密文。[/font]

    [font=宋体] 接下来修改 [/font] httpd.conf[font=宋体],在 [/font] Location [font=宋体] 标签中加入如下内容:[/font] AuthType Basic AuthName "svn repos" AuthUserFile /etc/svn/passwordfile Require valid-user

    [font=宋体] 重新启动 [/font] Apache[font=宋体],[/font] [font=宋体] 打开浏览器访问版本库。[/font] Apache [font=宋体] 会提示你输入用户名和密码来认证登陆了,现在只有 [/font] passwordfile [font=宋体] 文件中设定的用户才可以访问版本库。也可以配置只有特定用户可以访问,替换上述 [/font] "Require valid-user" [font=宋体] 为 [/font] "Require user tony robert" [font=宋体] 将只有 [/font] tony [font=宋体] 和 [/font] robert [font=宋体] 可以访问该版本库。[/font]

    [font=宋体] 有的时候也许不需要这样严格的访问控制,例如大多数开源项目允许匿名的读取操作,而只有认证用户才允许写操作。为了实现更为细致的权限认证,可以使用 [/font] Limit [font=宋体] 和 [/font] LimitExcept [font=宋体] 标签。例如:[/font]

    require valid-user

    [font=宋体] 如上配置将使匿名用户有读取权限,而限制只有 [/font] passwordfile [font=宋体] 中配置的用户可以使用写操作。如果这还不能满足你的要求,可以使用 [/font] Apache [font=宋体] 的 [/font] mod_authz_svn [font=宋体] 模块对每个目录进行认证操作。[/font]

    [font=宋体] 用 [/font] mod_authz_svn [font=宋体] 进行目录访问控制 [/font]

    [font=宋体] 首先需要让 [/font] Apache [font=宋体] 将 [/font] mod_authz_svn [font=宋体] 模块加载进来。在 [/font] Subversion [font=宋体] 的安装目录中找到 [/font] mod_auth_svn [font=宋体] 模块,将其拷贝到 [/font] Apache [font=宋体] 安装目录的 [/font] modules [font=宋体] 子目录下。修改 [/font] httpd.conf [font=宋体] 文件,找到 [/font] LoadModule dav_svn_module modules/mod_dav_svn.so

    [font=宋体] 在其后面加上 [/font] LoadModuleauthz_svn_module modules/mod_authz_svn.so

    [font=宋体] 现在可以在 [/font] Location [font=宋体] 标签中使用 [/font] authz [font=宋体] 的功能了。一个基本的 [/font] authz [font=宋体] 配置如下:[/font]

    DAVsvn

    SVNPath /etc/svn/repos

    AuthTypeBasic

    AuthName "svn repos"

    AuthUserFile /etc/svn/passwd

    AuthzSVNAccessFile /etc/svn/accesspolicy

    Satisfy Any

    Require valid-user

    AuthzSVNAccessFile [font=宋体] 指向的是 [/font] authz [font=宋体] 的策略文件,详细的权限控制可以在这个策略文件中指定,如:[/font]#[font=宋体] 两个分组:[/font] committers[font=宋体],[/font] developers [groups] committers = paulex richard developers = jimmy michel spark sean \

    steven tony robert #[font=宋体] 在根目录下指定所有的用户有读权限 [/font] [/]

    • = r #[font=宋体] 追加 [/font] committers [font=宋体] 组用户有读写权限 [/font] @committers = rw #[font=宋体] 在 [/font] branches/dev [font=宋体] 目录下指定 [/font] developers [font=宋体] 组的用户有读写权限 [/font] [/branches/dev] @developers = rw #[font=宋体] 在 [/font] /tags [font=宋体] 组下给予用户 [/font] tony [font=宋体] 读写权限 [/font]

    [/tags] tony = rw #[font=宋体] 禁止所有用户访问 [/font] /private [font=宋体] 目录 [/font] [/private]

    • = #[font=宋体] 给 [/font] committers [font=宋体] 组用户读权限 [/font] @committers= r

    [font=宋体] 使用 [/font] SVNParentPath [font=宋体] 代替 [/font] SVNPath [font=宋体] 来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。例如上例中 [/font] tony [font=宋体] 将对所有版本库里的 [/font] /tags [font=宋体] 目录具有读写权限。如果要对具体每个版本库配置,用如下的语法:[/font][groups] project1_committers = paulex richard project2_committers = jimmy michel sparksean \

    steven tony robert [repos1:/]

    • = r @ project1_committer = rw [repos2:/]
    • = r @ project2_committer = rw

    [font=宋体] 这样项目 [/font] 1[font=宋体] 的 [/font] committer [font=宋体] 组只能对 [/font] repos1 [font=宋体] 版本库下的文件具有写权限而不能修改版本库 [/font] repos2[font=宋体],同样项目 [/font] 2[font=宋体] 的 [/font] commiter [font=宋体] 也不能修改 [/font] repos1 [font=宋体] 版本库的文件。[/font]

    [font=宋体] 用 [/font] MySQL [font=宋体] 代替文件形式存放密码 [/font]

    [font=宋体] 到目前为止我们的用户名密码文件还是以文本文件形式存放在文件系统中的,出于安全性的需要或者单点登陆等可扩展性的考虑,文本文件的管理方式都不能满足需求了。通过 [/font] Apache [font=宋体] 的 [/font] module_auth_mysql [font=宋体] 模块,我们可以用 [/font] MySQL [font=宋体] 来保存用户信息。该模块的主页在 [/font] [url]http://modauthmysql.sourceforge.net//url] font=宋体],你也可以在/font][ [url]http://modules.apache.org//url][ [font=宋体] 找到它的发行版本。安装方法同上述 [/font] Apache [font=宋体] 的模块一样,拷贝至 [/font] modules [font=宋体] 目录并在 [/font] httpd.conf [font=宋体] 文件中添加如下语句:[/font] LoadModule mysql_auth_modulemodules/mod_auth_mysql.so

    [font=宋体] 相应的 [/font] Location [font=宋体] 区域改写为:[/font]

    AuthName "MySQLauth"

    AuthType Basic

    AuthMySQLHost localhost

    AuthMySQLCryptedPasswordsOff

    AuthMySQLUser root

    AuthMySQLDB svn

    AuthMySQLUserTable users

    require valid-user

    [font=宋体] 然后在 [/font] mysql [font=宋体] 中添加名为 [/font] svn [font=宋体] 的数据库,并建立 [/font] users [font=宋体] 数据表:[/font] create databasesvn; use svn; CREATE TABLE users ( user_name CHAR(30) NOT NULL, user_passwd CHAR(20) NOT NULL, user_group CHAR(10), PRIMARY KEY (user_name) );

    [font=宋体] 在 [/font] users [font=宋体] 表中插入用户信息 [/font] insert into usersvalues('username','password','group');

    [font=宋体] 重新启动 [/font] Apache[font=宋体],在访问版本库的时候 [/font] Apache [font=宋体] 就会用 [/font] mysql [font=宋体] 数据表中的用户信息来验证了。[/font]

    [font=宋体] 用 [/font] SSL [font=宋体] 实现安全的网络传输 [/font]

    [font=宋体] 通过 [/font] Apache [font=宋体] 的网络链接,版本库中的代码和数据可以在互联网上传输,为了避免数据的明文传输,实现安全的版本控制,需要对数据的传输进行加密。[/font] Apache [font=宋体] 提供了基于 [/font] SSL [font=宋体] 的数据传输加密模块 [/font] mod_ssl[font=宋体],有了它,用户就可以用 [/font] https [font=宋体] 协议访问版本库,从而实现数据的加密传输了。[/font] SSL [font=宋体] 协议及其实现方式,是一个非常复杂的话题,本文只是介绍 [/font] Apache [font=宋体] 提供的最基本的 [/font] SSL[font=宋体] 配置方法,更加详细的介绍内容,请参考 [/font]http://httpd.apache.org/docs-2.0/ssl/ [font=宋体] 上的文档。[/font]

    [font=宋体] 开始配置前,我们需要一个实现 [/font] Apache [font=宋体] 中 [/font] SSL [font=宋体] 模块的动态程序库,通常名为 [/font] mod_ssl.so[font=宋体],及其配置文件,通常名为 [/font] ssl.conf[font=宋体]。这个实现是跟 [/font] Apache [font=宋体] 的版本相关的,不匹配的版本是不能用的;而且,并不是每一个 [/font] Apache [font=宋体] 的版本都自带了相关实现文件,很多情况下,我们需要自己去搜寻相关文件。另外,我们还需要 [/font] OpenSSL [font=宋体] 软件及其配置文件,来生成加密密钥和数字证书。这里,我们可以使用一些免费网站,如 [/font] [url]http://hunter.campbus.com//url][ [font=宋体] 上提供的集成版本的 [/font] Apache[font=宋体]。[/font]

    [font=宋体] 有了相关的工具和文件,我们就可以开始生成 [/font] SSL [font=宋体] 的证书和密钥了。首先,我们需要找到 [/font] openssl [font=宋体] 程序及其配置文件 [/font] openssl.cnf[font=宋体],运行如下命令来生成 [/font] 128 [font=宋体] 位的 [/font] RSA [font=宋体] 私有密钥文件 [/font] my-server.key[font=宋体]:[/font] opensslgenrsa -des3 -out my-server.key 1024 Loading 'screen' into random state - done Generating RSA private key, 1024 bit longmodulus .....++++++ ........++++++ e is 65537 (0x10001) Enter pass phrase for server.key:******** Verifying - Enter pass phrase forserver.key:********

    [font=宋体] 命令运行期间需要用户输入并确认自己的密码。[/font]

    [font=宋体] 现在,我们需要 [/font] SSL [font=宋体] 的认证证书,证书是由 [/font] CA[font=宋体]([/font] certificate authority[font=宋体])[/font] [font=宋体] 发放并且认证的。为此,我们可以用如下命令生成一个 [/font] CSR(Certificate Signing Request) [font=宋体] 文件发给 [/font] CA[font=宋体],从而得到 [/font] CA [font=宋体] 的认证:[/font] openssl req -new -key my-server.key -outmy-s erver.csr -config openssl.cnf

    [font=宋体] 当然,一般情况下,如果 [/font] Subversion [font=宋体] 的用户不是太多,安全情况不是很复杂,我们也可以生成一个自签名的认证证书,从而省去了向 [/font] CA [font=宋体] 申请认证的麻烦。[/font][font=宋体] 如下命令:[/font] openssl req -new -key my-server.key -x509 -out my-server.crt -configopenssl.cnf

    [font=宋体] 以上两个命令都需要用户输入那个 [/font] key [font=宋体] 文件的密码,以及一些网络设置信息,如域名,邮箱等等,这里输入的服务器域名应该与 [/font] Apache [font=宋体] 配置文件当中的一致。现在,我们可以在 [/font] Apache [font=宋体] 的 [/font] conf [font=宋体] 目录下新建一个 [/font] ssl [font=宋体] 目录,将 [/font] my-server.key [font=宋体] 和 [/font] my-server.crt [font=宋体] 文件都移动到 [/font] ssl [font=宋体] 目录里面。然后修改 [/font] ssl.conf [font=宋体] 文件,将 [/font] SSLCertificateKeyFile [font=宋体] 和 [/font] SSLCertificateFile [font=宋体] 项指向这两个文件。[/font]

    [font=宋体] 如果 [/font] Apache [font=宋体] 的 [/font] module [font=宋体] 目录里面没有 [/font] mod_ssl.so [font=宋体] 文件,可以将事先准备好的文件拷贝过去。然后,我们可以设置 [/font] Apache [font=宋体] 的配置文件 [/font] httpd.conf[font=宋体],将 [/font] ssl [font=宋体] 模块加入其中:[/font] LoadModule ssl_module modules/mod_ssl.so

    [font=宋体] 然后,在配置文件的最后,加上如下 [/font] SSL [font=宋体] 相关配置项:[/font] SSLMutex default SSLRandomSeed startup builtin SSLSessionCache none

    ErrorLog logs/SSL.log LogLevel info VirtualHostsvntest.ut.cn.ibm.com:443

    SSLEngine On

    SSLCertificateFile conf/ssl/my-server.crt

    SSLCertificateKeyFile conf/ssl/my-server.key

    [font=宋体] 这样,基本的设置工作就完成了。重新启动 [/font] Apache [font=宋体] 服务器,现在可以用 [/font] https [font=宋体] 协议代替 [/font] http [font=宋体] 协议来访问版本库了。如果要限定版本库只能用 [/font] https [font=宋体] 访问,我们可以在 [/font] Apache [font=宋体] 配置文件当中 [/font] Subversion [font=宋体] 部分加上 [/font] [font=宋体]“[/font] SSLRequireSSL[font=宋体]”。如下:[/font]

    DAV svn

    SVNPath /etc/svn/repos

    ………….#other items

    SSLRequireSSL

    [font=宋体] 总结 [/font]

    Subversion[font=宋体] 以其优良的版本控制功能,灵活的网络访问模型,以及与 [/font] Apache [font=宋体] 服务器联合配置所带来的更强大的管理控制功能,逐渐在开源软件开发的实践当中得到广泛的应用。本文重点介绍了 [/font] Subversion [font=宋体] 服务器端的配置以及与 [/font] Apache [font=宋体] 服务器联合配置的基本步骤和简单应用,实现了简单的实例应用。读者如果想要进一步了解相关信息,请参考文章后面列出的相关资料。[/font]

  • 造句 at 2008年07月15日

    用况且造句 一辆火车经过,况且况且况且况且况且……

  • 造句 at 2008年07月15日

    用难过造句 门前的小河很难过 评语:老师更难过