-OpenFoundry工具介紹與版本控制系統操作-國科會資訊安全技術研發專案計畫中央研究院資訊科技創新研究中心自由軟體鑄造場(OSSF) 陳富川宅面對宅接受宅處理宅放下宅KEEPCODING完全制霸 Success眾志成城 Teamwork為了完成專案目標問題?協同開發●掌握團隊合作進度●減少溝通討論時程●增加效率達成目標軟體專案開發管理輔助工具!?OpenFoundryMailingListVersionControlWebHostingNewsCommunityOpenFoundryFTPUploadIssueTrackingWikiSearchProjectCategoryReleaseManagementDownloaderInformationLicenseConsultation...SupportSupport進入正題...IfyourprojectisanNSCproject...NSCprojectsHavetoKnow●註冊帳號●真實姓名:計劃申請人的本名●註冊專案●專案建立者:計劃申請人帳號●專案代號請勿以國科會計劃編號命名●記得填寫「國科會計劃編號」●國科會相關的審查文件有專屬的上傳區域AfterCreateaProject...通信論壇MailingListIt'sconvenientinOpenFoundry[]版本控制VersionControl共同筆記Kwiki專案釋出ProjectRelease待辦事項IssueTracking通信論壇共同筆記版本控制待辦事項專案釋出資訊分享訊息傳遞交流討論MailingList通信論壇MailingListfeaturesmoderatemessagesmoderatesubscriptionseditmailservicemessageseditlistconfig......ListOwner單向傳播互動討論PLURKfollowmessages分享心情了解趨勢意見調查活動訊息訊息轉播通信論壇共同筆記版本控制待辦事項專案釋出Kwiki講義製作 經驗交流文件整理 心得分享共同筆記KwikiInteractiveDesignShare●Quickness●Flexibility●Trust●OpenSource通信論壇共同筆記版本控制待辦事項專案釋出VersionControl版本復原變動歷程修改記錄WhatisVersionControl?●一套能夠記錄文件,在各個不同的時間點上,所有變動的管理系統。●於多個相異的開發環境上,都能進行文件維護與保存狀態資訊。WhatVersionControlcando?●掌握團隊工作各部份的進度●減少與別人編輯中的檔案衝突●管理檔案變動的實際內容●記錄每次檔案的版本差異與摘要●救回無法復原的災難●找到特定時間點一併被更動的檔案VersionControlissuitablefor...●需長時間持續產出的工作●專題、報告、論文、翻譯●團隊合作才能達成目標的專案●成天擔心自己作品會突然間不見的人●沒事就常忘記自己在寫什麼的人●常不小心毀了自己的檔案的人●喜歡炫耀自己技術能力有多好的人某個角度來說 版本控制其實就是備份!?ForWhom?VS.VS.✔ForProgrammer✔CodingEnvironment✔ForEveryone✔AnyInformationData✔binary,document,imageBeforeVersionControl...●打包相關專案檔案●Windows–WinRAR、7-zip●Linux–tar、gzip、bzip2●記錄程式碼修改資訊●ALotofComments●TheKeyLogFilesBeforeVersionControl...●ALotofBackup持續的佔用空間!?BeforeVersionControl...●ALotofJobs●morecomments●morelogs●morefiles完全本末倒置!?AfterVersionControl...●FewerRedundantJobs●FocusonDevelopment效率提升!!VersionControlSystems●TherearethreekindofVersionControlSystems(VCS)forprojects●CVS●Subversion●Subversion(membersonly)SubversionOverviewWhySubversion?●ManyUsers●AbundantResources●Multi-languages●OpenSource●SupportManyPlatforms●Windows,GNU/Linux,BSD,MacOS...●UsefulGUI●TortoiseSVN,RapidSVN,Gsvn,NaughtySVN...Subversion常見名詞Atypicalclient/serversystemRepositoryClientWriteReadReadClientClientFundamentalConcepts●Repository(檔案庫)–分享資訊的中央系統–儲存資料的集散地–資料儲存形式為檔案系統樹Repository/trunk/branch/tagFundamentalConcepts●Workingcopy(工作複本)–將更動過的檔案「發表」給其他協同工作者–即時更新或合併更動過的檔案WorkingCopyRepositoryClientWriteReadReadClientClientHowitworks?➔add➔delete➔merge➔...➔add➔delete➔merge➔...➔status➔diff➔commit➔checkout➔update➔checkout➔update➔status➔diff➔commitCommunicationwithSVN.協同開發所可能遭遇的問題TheProblemofFileSharingAReadReadRepositoryAABruceTonyTheProblemofFileSharingA’WriteRepositoryA’A’’BruceTonyRepositoryA’’A’’A’HulkTonyReadTheProblemofFileSharingWherearemycode!!!!!!WriteTheProblemofFileSharingRepositoryClientClientClientClientClientClientClientClientClientClientTheProblemofFileSharingRepositoryClientClientClientClientClientClientClientClientClientClientWriteTheProblemofFileSharingRepositoryClientClientClientClientClientClientClientClientClientClientWherearemycode!!!!!!Wherearemycode!!!!!!Wherearemycode!!!!!!Wherearemycode!!!!!!Wherearemycode!!!!!!Wherearemycode!!!!!!WriteYA~Mycodecodecode~~uploadSolutionThelock-modify-unlocksolutionThecopy-modify-mergesolutionThelock-modify-unlocksolutionThelock-modify-unlocksolutionABruceTonyRepositoryALockReadA+BruceTonyRepositoryAReadThelock-modify-unlocksolutionRepositoryA+A+WriteunlockBruceTonyThelock-modify-unlocksolutionThelock-modify-unlocksolutionA+ABruceTonyRepositoryA+LockReadProblem●管理上的問題:使用者忘了解鎖●效率不彰:造成其他使用者時間上的等待Thecopy-modify-mergesolutionRepositoryAAAReadReadBruceTonyThecopy-modify-mergesolutionRepositoryAA++A+BruceTonyThecopy-modify-mergesolutionRepositoryA++A++A+WriteBruceTonyThecopy-modify-mergesolutionRepositoryA++A++A+WriteBruceTonyConflict(衝突)Thecopy-modify-mergesolutionA+A++RepositoryA++A++ReadBruceTonyMergeThecopy-modify-mergesolutionRepositoryA++A++A+++BruceTonyThecopy-modify-mergesolutionRepositoryA+++A++A+++WriteBruceTonyThecopy-modify-mergesolutionRepositoryA+++A+++A+++ReadBruceTonyThecopy-modify-mergesolutionAdvantage●可同時多人協同合作開發●使用者可以同時各自工作,不需等待他人●系統會協助判斷檔案是否有衝突(conflict),但最後還是需要使用者去決定如何解決Subversiondefaultsolutionuse“Thecopy-modify-mergesolution”Subversion版本定義OrganizeaRepository●Trunk(主幹)–程式主要的共享開發版本●Branches(分支)–程式的分支版本–常用於釋出版本的功能添加、臭蟲修正,或特別為某目的的開發版●Tags(標記)–程式的特別版本–常用於釋出版本,或需要特別標定時使用BranchTagTrunkOrganizeaRepositoryTag(Release1.0)TrunkTimeOrganizeaRepositoryBranchMergeTag(Release1.0)TrunkTimeBranchMergeTag(Release1.0)TrunkTag(Release1.1)OrganizeaRepositoryMergeTimeMergeBranchMergeTag(Release1.0)TrunkTag(Release1.1)OrganizeaRepositoryMergeTag(Release2.0)BranchSubversion範例操作ASimpleExampleforSubversion●從Client端將開發的檔案上傳至Repository的WorkingCopy(工作複本)●Command:importLOCALCONSOLEcdtestprojectsvnimporttrunk/將檔案上傳至Repository