在學校的時候,一直習慣在windows下搞開發,用visual stduio或是eclipse之類的ide。到了現在的公司之后,幾乎都是在linux下開發的。雖然linux下有vim等編輯器,但用起來還是很不習慣。所以我往往是在尋找在windows好linux之間同步代碼的方式。這樣就可以在windows下開發,然后再傳到linux下進行編譯,當然這個過程越簡單越好。搞了很久,有一些心得,下面是幾套方案的比較。
1、samba
我覺得samba是目前最好的解決方案。要求在linux端安裝samba服務,并配置好共享目錄,然后在windows端做磁盤映射,把linux的某個目錄映射到windows下。
這個方案最大的好處是不需要人工操作,在映射的磁盤下的文件自動同步到linux下,實時性比較好,cache機制也相對非常完善,一般不會有卡的感覺。
但是這個方案有個缺點是,必須在linux機器上安裝samba,目前我所在公司,對在linux服務器上安裝samba,管得比較嚴,擔心有安全的隱患。因此受限于這個的限制。
一個解決的辦法就是安裝虛擬機,在虛擬機中安裝與服務器一樣的操作系統和編譯環境,然后在虛擬機中安裝samba,再到windows下做映射。但是這個方案的問題是虛擬機要占用一定的cpu和內存,而且編譯速度會比較慢。最讓我忍受不了的是虛擬機導致windows無故重啟。我用的virtualbox,不知道是不是virtualbox的bug。因此,最終這套方案被我放棄了。
2、ssh + webdrive
webdrive是一個商業軟件,有破解版本的。它可以通過ssh將linux的某個目錄映射到windows下。但是這個方案有個嚴重的問題,速度好像不行,會讓你感覺有卡的感覺。你想呀,開了eclipse做開發,經常發現保存一個文件要很長的時間,讓你很不能忍受,建立索引的時間也比較長。
這個方案是我最初的選擇,最后由于速度問題放棄了。webdrive的下載地址:http://www.verycd.com/topics/2905875/。
3、svn
就是在windows下做開發,然后提交代碼到svn。在到linux下svn下載代碼,然后編譯。這樣做的好處是編輯的時候很方便,不用擔心速度的問題,eclipse建立索引也很快。
但是存在的問題是什么呢?一個是不是很方便,要先提交代碼,然后再下載代碼,然后才能編譯。這也與提交代碼的原則是相違背的,我們一般要確保我們的代碼是能編譯通過的,才提交,有的時候甚至要code review通過后才能提交代碼。對于采用CI機制管理的代碼來說,更是這樣,提交一次代碼會引起編譯機的編譯和跑單測。
因此這種方案也不是很可取。
4、cwRsync
在linux下,我們都知道有一個很好的同步工具rsync。其實在windows下也有一個rsync的實現,叫做cwRsync,下載地址:http://sourceforge.net/projects/sereds/files/cwRsync/4.0.3/
我們只要在windows下裝上rsync的客戶端,然后每次寫完代碼后,用rsync將代碼同步到linux,然后到linux端進行編譯。rsync是增量同步的,速度還是很快的。
這樣在windows端搞個腳本,每次寫完代碼,運行一下同步代碼,就可以到linux下進行編譯了,還是比較方便的。這是我目前使用的辦法。
由于這個東東要用到ssh,可能需要輸入密碼,這不是很方便。我的解決方案是用sshpass來搞定。我用cygwin編了個sshpass就搞定了。
不知道各位大大還有沒有別的方法,有的話,請不吝賜教。
新聞熱點
疑難解答