Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲情侣在线,日韩精品一区二三区中文,国产一级特黄aa大片软件

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Coding的SVN服務踩坑記

          Coding的SVN服務踩坑記

          Q:咳咳,為啥會用到Coding的SVN?

          A:博主電腦上已經配好一個coding的賬號,且是全局的。網上搜索一臺電腦上配置兩個git賬號都是采用非全區的賬號的方法。這個coding是博主的第二個coding賬號,全局的賬號不想動他。于是嘗試下Coding的SVN服務。

          食用方式

          在項目的倉庫設置>開啟SVN服務,藍后去下載小烏龜TortoiseSVN。不要點擊下面這個,這個是服務器端的。一開始不清楚,踩一個坑

          不要下載這個!!

          去下載小烏龜tortoisesvn.net/downloads.html

          安裝

          打開這個,SVN輸入地址(Coding上有)

          輸入Coding賬號

          登錄后就可以看到倉庫內容了。

          藍后直接把需要部署的代碼移進去

          后續

          想覆蓋文件,報錯。

          想刪除文件,報錯。

          由于SVN不是很會用,這兩個坑踩的我一臉懵逼。讓后腦子終于開竅,想到了更好的解決小號coding代碼推送的方法。于是棄用SVN了233333~

          關注關注求關注

          ortoiseSVN 是 Subversion 版本控制系統的一個免費開源客戶端,可以超越時間的管理文件和目錄。文件保存在中央版本庫,除了能記住文件和目錄的每次修改以外,版本庫非常像普通的文件服務器。你可以將文件恢復到過去的版本,并且可以通過檢查歷史知道數據做了哪些修改,誰做的修改。

          一、安裝SVN客戶端

          首先安裝SVN客戶端,windows一般選擇烏龜客戶端:https://tortoisesvn.net/downloads.html。 根據系統位數選擇相應客戶端進行安裝。

          二、獲取倉庫代碼

          假如項目已經在服務器的倉庫里,那么現在你要做的就是把它檢出到本地。 首先創建一個空文件夾,用來存放項目源代碼。在空文件夾內右鍵,選擇SVN檢出(SVN Checkout ...)菜單項。

          在Checkout界面,填入項目的版本庫地址,選擇確定。

          此時會彈出一個對話框讓你輸入賬號密碼,輸入你的賬號密碼即可。記得勾選保存認證,不然每次操作都會讓你輸入。

          此時在指定的目錄下就能看到checkout下來的項目代碼了。

          SVN的修訂號是怎么回事?

          svn commit 操作可以作為一個原子事務操作發布任意數量文件和目錄的修改。在你的工作副本中,你可以改變文件內容,創建、刪除、改名和復制文件和目錄,然后作為一個整體提交。

          在版本庫中,每次提交被當作一次原子事務操作:要么所有的改變發生,要么都不發生,Subversion 努力保持原子性以應對程序錯誤、系統錯誤、網絡問題和其他用戶行為。每當版本庫接受了一個提交,文件系統進入了一個新的狀態,叫做版本,每個版本被賦予一個獨一無二的自然數,一個比一個大,初始修訂號是 0,只創建了一個空目錄,沒有任何內容。

          可以形象的把版本庫(Repository)看作一系列樹,想象有一組版本號,從 0 開始,從左到右,每一個修訂號有一個目錄樹掛在它下面,每一個樹好像是一次提交后的版本庫“快照”。

          不像其它版本控制系統,Subversion 的版本號是針對整個目錄樹的,而不是單個文件。每一個版本號代表了一次提交后版本庫整個目錄樹的特定狀態,另一種理解是版本 N 代表版本庫已經經過了 N 次提交。

          如何查看SVN上當前代碼庫的最新版本號是多少?

          打開右鍵菜單中的show log,然后看到一系列版本更新歷史,最上面的那一行,即是最新版本號,所謂的head revision。

          如何查看本地SVN管理的代碼庫的當前版本號是多少?

          打開右鍵菜單中的show log,然后看到一系列版本更新歷史,顯示為粗體的那一行即你本地當前的版本。

          如何將本地代碼庫的版本回退到某一個舊版本?

          打開右鍵菜單中的update to revision 在彈出的對話框中進行版本號指定即可,如果選擇head revision則更新為最新版本。

          三、提交代碼到倉庫

          如果你更新了目錄中的文件,提交代碼需要用到commit功能,commit的功能不僅僅是上傳,他會和服務器上面的文件進行對比,假如你更新了某個文件而服務器上面也有人更新了這個文件,并且是在你checkout之后做的更新,那么它會嘗試將你的更新和他人的更新進行融合(merge),假如自動merge不成功,那么報告conflict,你必須自己來手動merge,也就是把你的更新和別人的更新無沖突的寫在一起。

          commit的時候,最好填寫Log信息,這樣保證別人可以看到你的更新究竟做了寫什么。這就相當于上傳文件并且說明自己做了那些修改,多人合作的時候log非常重要。

          TortoiseSVN的commit只會上傳原先checkout然后又被修改了的文件,假如你新加入了某些文件,需要右鍵點擊文件選擇Add,然后文件上面會出現一個加號,在下次commit的時候它就會被upload并且被標記為綠色對勾。沒有綠色對勾的文件不會被commit。

          TortoiseSVN圖標不能顯示的解決方案?

          右鍵->TortoiseSVN->setting->Icon Overlays->Status cache->default/Shell,然后重啟電腦。

          TortoiseSVN的Settings窗口:

          我們在日常使用中,最常用的是更新(SVN Update)和提交(SVN Commit)操作。這兩個步驟務必要非常熟練。

          . 現象

          • SVN結構
          • SVN主目錄: /svn/repos
          • SVN配置文件: /svn/etc

          2. 原因分析

          SVN數據與用戶備份

          hotcopy 與 dump

          • Hotcopy直接復制存儲庫。 它速度很快,但它保留了底層文件系統等信息。 導入副本的服務器需要是相同的版本,具有相同的配置等
          • Dump是版本獨立的。 這意味著導出的副本可以被任何版本的svn使用

          Gzip壓縮與xz壓縮

          • Gzip壓縮速度快,但是壓縮比例沒有xz高
          • xz壓縮速度慢,但是壓縮比例高

          在考慮磁盤空間緊張,內存和CPU資源使用充足,可以使用xz壓縮,壓縮速度慢

          在內存和CPU資源使用緊張,不考慮磁盤容量大小,建議使用gzip壓縮,壓縮速度快

          3. 解決方法

          3.1 備份策略

          每一個月進行全量備份,每隔8個小時進行增量備份

          3.2 備份準備

          本地備份目錄:/data/Backup/SVN

          • 賦予權限
          • 將目錄/data以及子目錄對其他用戶添加可讀、可執行的權限
          • 目錄/data/Backup以及子目錄添加對組backup可讀、可寫、可執行的權限
          # 添加組backup
          groupadd backup
          # 添加用戶cory到組backup
          usermod -a -G backup cory
          # 更改/data權限
          chmod -R 775 /data
          # 更改/data/Backup的用戶組backup
          chown -R root:backup /data/Backup

          3.3 備份內容

          • 數據備份

          將dump出來的文件進行備份

          • 配置文件備份
          • 認證文件、權限文件備份
          • SVNAdmin備份

          iF.SVNAdmin管理界面備份

          3.4 備份腳本

          此版本只是基礎版本,增量與全量備份未寫在其中,請知悉

          #!/usr/bin/env bash
          # TODO: Bup備份
          # TODO: 其他備份目錄
          # TODO: 軟編碼 IP 等
          # TODO: 定期刪除
          # TODO: 模塊編碼
          # TODO: 增量備份與全量備份
          set -e
          password=$1
          repo_dir="/svn/repos"
          backup_dir="/data/Backup/SVN"
          svnadmin="/usr/bin/svnadmin"
          svnlook="/usr/bin/svnlook"
          name=$(basename "$repo_dir")
          revision=$($svnlook youngest "$repo_dir")
          target="$backup_dir/$name-$revision.xz"
          echo "$name-$revision.xz" > $backup_dir/currentBackup.info
          
          if [ ! -e "$target" ]; then
              rm -f "$backup_dir/$name"-*.xz
              # nice $svnadmin dump -r $((revision_full + 1)):${latest_revision} --incremental --deltas --quiet "$repo_dir" | xz -T 0 --compress --stdout -9 --extreme > "$target"
              # nice $svnadmin dump --quiet "$repo_dir" | xz -T 0 --compress --stdout -9 --extreme > "$target"
              nice $svnadmin dump --deltas --quiet "$repo_dir" | xz -T 0 --compress --stdout -9 --extreme > "$target"
          fi
          
          # sync data
          sshpass -p "${password}" rsync -arvP -e "ssh -p 22222" $backup_dir/currentBackup.info sailingadmin@192.168.10.11:/data/SVN/
          # sync data
          sshpass -p "${password}" rsync -arvP -e "ssh -p 22222" "$target" sailingadmin@192.168.10.11:/data/SVN/
          # sync etc
          sshpass -p "${password}" rsync -arvP -e "ssh -p 22222" /svn/etc sailingadmin@192.168.10.11:/data/SVN/
          # sync svnadmin
          sshpass -p "${password}" rsync -arvP -e "ssh -p 22222" /var/www/html/svnadmin sailingadmin@192.168.10.11:/data/SVN/
          # delete
          rm -rf $backup_dir/currentBackup.info
          rm -rf "$target"

          3.5 定期刪除備份文件

          將備份在192.168.10.11目錄的過期文件定期刪除

          通過Linux Crontab或者Jenkins都可以,如Crontab

          #!/usr/bin/env bash
          # TODO: Bup備份
          # TODO: 其他備份目錄
          # TODO: 軟編碼 IP 等
          # TODO: 定期刪除
          set -e
          password=$1
          repo_dir="/svn/repos"
          backup_dir="/data/Backup/SVN"
          svnadmin="/usr/bin/svnadmin"
          svnlook="/usr/bin/svnlook"
          name=$(basename "$repo_dir")
          revision=$($svnlook youngest "$repo_dir")
          target="$backup_dir/$name-$revision.xz"
          echo "$name-$revision.xz" > $backup_dir/currentBackup.info
          
          if [ ! -e "$target" ]; then
              rm -f "$backup_dir/$name"-*.xz
              # nice $svnadmin dump -r $((revision_full + 1)):${latest_revision} --incremental --deltas --quiet "$repo_dir" | xz -T 0 --compress --stdout -9 --extreme > "$target"
              # nice $svnadmin dump --quiet "$repo_dir" | xz -T 0 --compress --stdout -9 --extreme > "$target"
              nice $svnadmin dump --deltas --quiet "$repo_dir" | xz -T 0 --compress --stdout -9 --extreme > "$target"
          fi
          
          # sync data
          sshpass -p "${password}" rsync -arvP -e "ssh -p 22222" $backup_dir/currentBackup.info sailingadmin@192.168.10.11:/data/SVN/
          # sync data
          sshpass -p "${password}" rsync -arvP -e "ssh -p 22222" "$target" sailingadmin@192.168.10.11:/data/SVN/
          # sync etc
          sshpass -p "${password}" rsync -arvP -e "ssh -p 22222" /svn/etc sailingadmin@192.168.10.11:/data/SVN/
          # sync svnadmin
          sshpass -p "${password}" rsync -arvP -e "ssh -p 22222" /var/www/html/svnadmin sailingadmin@192.168.10.11:/data/SVN/
          # delete
          rm -rf $backup_dir/currentBackup.info
          rm -rf "$target"

          3.6 還原

          準備文件

          • 全量備份文件:repos-5083-Full.xz
          • 增量備份文件:repos-5098-Inc.xz
          • 其他其他備份文件:etc配置權限文件、svnadmin界面文件

          1) SVN安裝

          Centos 7 安裝 SVN

          • Apache安裝
          crontab -e
          # 每隔兩天刪除備份文件
          # 刪除除當前備份文件(從currentBackup.info讀取)以外的其他壓縮文件
          # * * */2 * * cd /data/SVN && ls *.xz | grep -v $(cat currentBackup.info) | xargs rm -rf
          • 去除apache默認歡迎界面
          sudo sed -i 's/^/#&/g' /etc/httpd/conf.d/welcome.conf
          • 阻止顯示/var/www/html目錄
          sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/httpd/conf/httpd.conf
          • 安裝SVN和mod_dav_svn模塊
          sudo yum install -y subversion mod_dav_svn

          2) SVN配置

          • 更改配置文件
          sudo vi /etc/httpd/conf.modules.d/10-subversion.conf

          最終內容如下:

          LoadModule dav_svn_module modules/mod_dav_svn.so
          LoadModule authz_svn_module modules/mod_authz_svn.so
          LoadModule dontdothat_module modules/mod_dontdothat.so
          <Location /svn>
          DAV svn
          SVNParentPath /data/SVN
          AuthName "SVN Repos"
          AuthType Basic
          AuthUserFile /etc/svn/svn-auth
          AuthzSVNAccessFile /etc/svn/authz
          Require valid-user
          </Location>
          創建SVN Repo
          sudo mkdir /data/SVN
          cd /data/SVN
          sudo svnadmin create repos
          sudo chown -R apache:apache repos

          3) 還原Restore

          解壓全量備份包和增量備份包

          sudo xz -d -T 0 repos-5083-Full.xz
          sudo xz -d -k -T 0 repos-5098-Inc.xz

          依次導入解壓出來的備份文件

          sudo svnadmin load /data/SVN/repos < repos-5083-Full
          sudo svnadmin load /data/SVN/repos < repos-5098-Inc

          4)還原權限文件

          拷貝備份文件到SVN安裝時的配置文件路徑地址:

          # AuthUserFile /etc/svn/svn-auth
          # AuthzSVNAccessFile /etc/svn/authz
          
          sudo /etc/svn
          sudo cp /data/etc/svn/authz /etc/svn/
          sudo cp /data/etc/svn/svn-auth /etc/svn/
          sudo chown -R root:apache /etc/svn/
          sudo chmod -R 670 /etc/svn/

          5) 開啟apache并修改防火墻

          sudo systemctl start httpd.service
          sudo systemctl enable httpd.service
          sudo firewall-cmd --zone=public --permanent --add-service=http
          sudo firewall-cmd --reload

          確認已恢復到到對應Revision:5098

          6) iF.SVNAdmin管理界面還原

          拷貝svnadmin備份文件到/var/www/html中

          sudo cp -rf /data/svnadmin /var/www/html/
          sudo chmod -R 777 /var/www/html/svnadmin/data/
          sudo chown -R apache:apache /var/www/html/svnadmin/

          因為未安裝php相關軟件包,安裝完成,重啟即可

          sudo yum install php
          sudo systemctl restart httpd

          3.7 驗證

          1)訪問驗證

          SVN訪問以及IF.Svnadmin管理界面訪問

          2)權限驗證

          3)節點Revision還原驗證


          主站蜘蛛池模板: 3D动漫精品啪啪一区二区下载 | 日韩精品视频一区二区三区 | 日韩人妻无码一区二区三区99| 国产乱码一区二区三区| 熟妇人妻一区二区三区四区| 海角国精产品一区一区三区糖心| 亚洲国产一区国产亚洲| 国产无线乱码一区二三区 | 国产激情一区二区三区 | 精品免费国产一区二区| 亚洲色精品VR一区区三区| 国产suv精品一区二区33| 国产成人无码AV一区二区在线观看 | 国产精品污WWW一区二区三区 | 国产一区二区三区免费观看在线| 一区二区三区在线视频播放| 国产成人精品一区二三区| 无码一区二区三区在线| 欧亚精品一区三区免费| 无码中文人妻在线一区 | 熟女性饥渴一区二区三区| 免费无码一区二区三区蜜桃| 亚洲综合无码AV一区二区| 亚洲一区AV无码少妇电影☆| 国产精品丝袜一区二区三区 | 制服丝袜一区在线| 无码精品国产一区二区三区免费| 国产AV午夜精品一区二区三| 国语精品一区二区三区| 人妻无码久久一区二区三区免费 | 天码av无码一区二区三区四区| 视频一区在线播放| 无码毛片一区二区三区中文字幕| 美女免费视频一区二区| 精品一区二区三区高清免费观看| 精品一区二区三区高清免费观看 | 伊人色综合一区二区三区| 亚洲国产精品自在线一区二区| 亚洲一区精品视频在线| 日韩在线一区视频| 国产福利一区二区在线视频 |