歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Windows平台Sublime Text編輯遠程Linux平台上的文件

Windows平台Sublime Text編輯遠程Linux平台上的文件

日期:2017/2/28 14:29:40   编辑:Linux教程

Sublime Text是個跨平台的強大的代碼編輯工具,不多說。
想使用Sublime Text完成linux平台下django站點的代碼編輯工作以提高效率(原來使用linux下的vim效率較低,適合編輯一些小腳本)。

下載linux平台下的Sublime_Text_2.0.2_x64.tar.bz2(http://www.sublimetext.com/)

解壓使用:
tar -xjvf Sublime_Text_2.0.2_x64.tar.bz2
cd Sublime\ Text\ 2/

執行
./sublime_text

報錯
./sublime_text: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./sublime_text)
./sublime_text: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./sublime_text)
./sublime_text: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by ./sublime_text)

原因是所使用的系統為CentOS5,版本過低,c/c++庫版本過低。
公司的電腦不能隨便升級庫或者升級系統,只能另想辦法。

中文輸入的問題是參考的這篇文章:http://www.linuxidc.com/Linux/2014-06/103855.htm

Ubuntu 12.10 安裝破解Sublime Text 2 http://www.linuxidc.com/Linux/2013-07/86898.htm

Ubuntu 13.04安裝Sublime Text 2 http://www.linuxidc.com/Linux/2013-05/84228.htm

編碼神器——Sublime Text 包管理工具及擴展大全 http://www.linuxidc.com/Linux/2013-10/91701.htm

如何開發 Sublime Text 2 的插件 http://www.linuxidc.com/Linux/2013-09/90046.htm

Windows Mac Linux下安裝以及破解Sublime Text 2編輯器 http://www.linuxidc.com/Linux/2013-08/89452.htm

文本編輯器Sublime Text 使用體驗 http://www.linuxidc.com/Linux/2013-08/89326.htm


設想一:
linux服務器上的代碼拉下來存放在windows機器上,使用windows平台上的sublime對其進行編輯,之後重新上傳到linux服務器中。

問題:代碼編輯後通常需要實際運行調試,尤其是站點類型的代碼,常常需要編輯好後立刻驗證一下顯示結果。而我們的整個運行環境是搭建在linux平台下的,如此一來,便需要先將代碼從linux服務器拉倒windows平台,改動一個地方後重新傳回linux服務器,測試運行,若有問題則重新拉下來編輯,重新上傳、測試,如此下去,非常繁瑣耗時。有沒有一種更好的辦法?

設想二:
在linux服務器上使用git為代碼建立倉庫,在windows上clone該倉庫,使用sublime對clone下來的倉庫中的代碼進行編輯,編輯完成後一條push命令將所有提交的更新內容推到遠程的代碼倉庫中進行測試。過程與設想一類似,改進之處在於使用git命令來向遠程linux服務器推更新,而不是手工逐個將更新的文件上傳到遠程服務器。

不知道有沒有問題,先試試看:
之前已經在linux服務器上創建了代碼倉庫,位置為
/var/www/site/mycitsm
直接使用 /var/www/site/mycitsm目錄下的.git目錄創建供其他機器clone的代碼倉庫
sudo git remote add origin ssh://username@IP:PORT/var/www/site/mycitsm/.git

之後遠程機器就可以使用
git clone ssh://username@IP:PORT/var/www/site/mycitsm/.git d:/www/mycitsm
該命令將遠程服務器上的代碼倉庫拉倒本地d:/www/mycits目錄中

我們在windows平台上下載安裝Git-1.9.2(http://git-scm.com/download/win)或者第三方的gitHub等等
clone倉庫:
進入git bash(安裝Git後創建的命令行工具)
$git clone ssh://username@IP:PORT/var/www/site/mycitsm/.git d:/www/mycitsm
可能提示讓輸入遠程服務器上op1的密碼,(如果將本地服務器的公鑰寫進了遠程服務器的authorized_keys文件則無需密碼即可。具體可參考如何設置無密碼SSH至遠程主機,Windows系統與linux系統之間與linux系統與linux系統之間的設置方法是相同的。)
也可能提示找不到git-upload-pack,這是因為遠程服務器中git安裝的位置不是標准的默認位置,只需要將這些工具復制到標准的位置,或在標准位置設置軟連接連接至這些工具即可,也可以在clone命令中指定工具的位置如: --upload-pack /home/op1/bin/git-upload-pack。

此後遠程倉庫中的目錄結構和內容被clone到了本地windows服務器的d:/www/mycitsm目錄中了,可以使用sublime直接打開該目錄對內部的文件進行編輯。

在git bash中進入本地倉庫
$cd d://www/mycitsm

查看git狀態
$git status

提交變化
$git add filename
$git commit -m "some text"

將本地倉庫推到遠程倉庫
$git push (origin master)

報錯:
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To ssh://[email protected]:1022/var/www/site/mycitsm/.git
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'ssh://[email protected]:1022/var/www/site/my
citsm/.git'

意思為:默認情況下不允許在非裸倉庫中更新當前分支,因為推送的內容會導致索引和工作目錄樹不一致。
盡管可以通過通過將git配置文件中'receive.denyCurrentBranch'變量值設置為ignore或warn來允許推送至當前分支,但非常不推薦這麼做,除非你安排更新工作目錄樹來匹配你推送的內容。

既然如此,那我們設置一個羅倉庫會怎麼樣呢?
來到linux服務器的/var/www/site/目錄
創建裸倉庫(具體參考http://git-scm.com/book/zh):
$ git clone --bare mycitsm mycitsm.git
該命令實際上相當於
$ cp -Rf mycitsm/.git mycitsm.git

之後把該羅倉庫移動至你期望的位置即可。
$sudo git remote add origin ssh://username@IP:PORT/var/www/site/mycitsm.git
$git clone ssh://username@IP:PORT/var/www/site/mycitsm.git d:/www/mycitsm

用sublime編輯,本地提交,推送至遠程倉庫。沒有看到異常。
那,是否意味著我們可以在遠程的倉庫中測試了呢?

連到linux服務器進入/var/www/site/mycitsm/目錄發現裡邊的文件並沒有發生任何變化。哦對,我們是將更新推送到了linux服務器上的裸倉庫mycitsm.git中。
進入mycitsm.git,恩並沒有工作目錄樹(這也是羅倉庫之所以叫裸倉庫的原因),它只記錄了提交歷史信息。

費了好大勁,也就是說我們並不能通過這種方式來將本地最新內容同步到linux原始倉庫中,只能將變化信息同步到相關的裸倉庫中,而我們又不能在裸倉庫中獲取到可以進行測試的目錄文件。

且上述兩種方案都有一個問題,那就是linux服務器中的文件變化不能主動直接的反饋到windows端,我們必須重新拉回最新的文件才能看到這種變化。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-07/104681p2.htm

Copyright © Linux教程網 All Rights Reserved