以下是年輕的時(shí)候的想法,現(xiàn)在想想實(shí)在是太蠢了,還是老老實(shí)實(shí)用內(nèi)網(wǎng)穿透吧啊啊啊?。。?!微信開(kāi)發(fā)——內(nèi)網(wǎng)穿透
微信開(kāi)發(fā)過(guò)程中有一個(gè)很坑的地方,必須把代碼部署到有公網(wǎng)IP的服務(wù)器上才能測(cè)試(不考慮內(nèi)網(wǎng)穿透)。
剛開(kāi)始用git同步代碼,開(kāi)發(fā)完了push到github上,然后在服務(wù)器上pull下來(lái),這樣做很簡(jiǎn)單,但不優(yōu)雅。如果只做很小的改動(dòng),想看看運(yùn)行效果,但是在沒(méi)有運(yùn)行確認(rèn)代碼正確性的情況下commit,會(huì)污染分支的信息,有可能會(huì)導(dǎo)致多次無(wú)意義的提交。
然后嘗試了scp和sftp,jetbrains家的IDE都支持sftp部署,這樣可以在改完代碼后,上傳文件,然后在服務(wù)器上執(zhí)行,代碼驗(yàn)證完了,再在本地commit。這樣不會(huì)污染分支信息了,但是scp和sftp不能增量傳輸文件,每次都把所有文件上傳一遍,速度較慢,另外他們exclude機(jī)制很難用,很難排除掉.pyc這樣的臨時(shí)文件。
最后選擇了rsync,這是一個(gè)非常棒的可以增量傳輸文件的命令,它只傳輸改動(dòng)過(guò)的文件,大大提高了傳輸速度,它還有強(qiáng)大的exclude功能,匹配規(guī)則與git相似,甚至可以直接使用.gitignore文件作為--exclude-from參數(shù)的值。
總結(jié): 在做微信開(kāi)發(fā)(或是其它需要實(shí)時(shí)部署到遠(yuǎn)程服務(wù)器上的項(xiàng)目)時(shí),可以使用rsync向遠(yuǎn)程機(jī)器上傳文件,使用git做版本控制。千萬(wàn)不要用git來(lái)傳文件,否則容易產(chǎn)生無(wú)意義的commit messages。