1. 程式人生 > >將CVS遷移到Git並保留歷史記錄和分支

將CVS遷移到Git並保留歷史記錄和分支

二話不說,先看程式碼:
cat run.sh
#!/bin/sh

#rsync -av [email protected]::/cvshome/module/ /data/cvs_migration/CVSRepo/module


rm -rf /data/cvs_migration/cvs2git-tmp
mkdir /data/cvs_migration/cvs2git-tmp
/data/cvs_migration/cvs2svn-2.4.0/cvs2git \
    --encoding=gbk\
    --blobfile=/data/cvs_migration/cvs2git-tmp/git-blob.dat \
    --dumpfile=/data/cvs_migration/cvs2git-tmp/git-dump.dat \
    --username=cvs2git \
    /data/cvs_migration/CVSRepo


rm -rf /data/cvs_migration/GitTargetRepository.git
git init /data/cvs_migration/GitTargetRepository.git
cd /data/cvs_migration/GitTargetRepository.git
cat /data/cvs_migration/cvs2git-tmp/git-blob.dat /data/cvs_migration/cvs2git-tmp/git-dump.dat|git fast-import

#以下用來修改目錄結構,使某個目錄module成為根目錄
#git filter-branch --subdirectory-filter module -- --all
#以下用來瘦身
#git reflog expire --expire=now --all && git gc --prune=now --aggressive
#新增遠端
#git remote add origin [email protected]:GitTargetRepository/module.git
#將剛才從cvs中匯入並轉化的內容以映象的形式推送所有分支到遠端
#git push --mirror

說明:

#rsync這段是為了把cvs倉庫中的檔案複製過來,這裡我用的rsync方式,實際直接把原來伺服器上的倉庫複製過來就可以了

主要功能是使用了cvs2git這個程式,關於它的介紹請參考: http://cvs2svn.tigris.org/cvs2git.html


相關推薦

CVS遷移Git保留歷史記錄分支

二話不說,先看程式碼:cat run.sh #!/bin/sh #rsync -av [email protected]::/cvshome/module/ /data/cvs_migration/CVSRepo/module rm -rf /data/cv

使用git遷移git專案保留提交記錄

場景 在平時開發中我們有自己的git倉庫,組內提交都是在這個庫。突然有一天,領導說要把這個庫整合到另一個更大的工程中(華為雲的看板),那裡面有前後端的程式碼;為了方便大家查詢,我們需要將各個組的程式碼遷移到同一個大工程下。 問題 提交要保留提交記錄 changelog要保留 組內成員要保留

svn伺服器上不同倉庫下的專案遷移保持歷史記錄

問題:由於需要整理svn上的資料,需要將倉庫A中的某個專案遷移到倉庫B中,同時需要保持該專案所有的修改記錄;           錯誤做法:①通過複製,那麼此時該專案的檔案只保留最新的版本;   ②將

匯入另一個 Git庫到現有的Git保留提交記錄

提取出的主要步驟如下: 1 切換到要合併到的倉庫 2 git remote add 倉庫名 被合併倉庫路徑 3 git fetch --all 4 git merge 倉庫名/被合併倉庫想合併的分支 問題描述: 我在本地有兩個Git庫專案(D1=PC專案  包含通用

git拆分子目錄作為新倉庫保留log記錄

需求描述:現有一個非常之龐大(大的過分)的git倉庫,包含了N多個專案的原始碼,專案各個階段的文件,原型等。對於新使用者來說,clone一次需要很長時間(網速也是槽點)。因此決定將原倉庫拆分,將原始碼子目錄作為一個新的倉庫,並且需要保留和子目錄相關的log記錄。一.前期準備所

Git---檢視提交歷史記錄

概述: 我們是如何記錄我們的人生----日記,如果你那天閒來無事可以翻一翻,說明我們都是有故事的人,哈哈,如果我們想要檢視Git提交歷史記錄,怎麼辦? 1.檢視提交歷史 語法:git log commit d521dd00f9b8cc3e54064abb3d8125d88e

正確的 Git 提交記錄分支模型

兩年前編寫的文章 Git Style,是參考業界實踐對 Git 提交記錄格式和分支模型所做的總結。本文在 Git Style 基礎上,再次描述提交記錄的格式和分支模型,並介紹兩個工具 commitizen 和 gitflow,分別處理維護提交記錄格式和分支切換的工作。 C

Day12-微信小程式實戰-交友小程式-優化“附近的人”頁面與serach元件的佈局樣式以及搜尋歷史記錄本地快取*內附程式碼)

回顧/:我們已經實現了顯示附近的人的功能了,可以多個人看到附近的人頁面了 但是還是要進行優化有幾個問題:1、我們使用者選擇了其他的自定義頭像之後,在首頁可以看到頭像的變化,但是在附近的人中頭像會變成報錯的樣式:如:      也就是500了,也就是找不到這個圖片了,解決方法:看

Git倉庫完整遷移歷史記錄

原文地址:http://blog.csdn.net/candyguy242/article/details/45920111 如果你想從別的 Git 託管服務那裡複製一份原始碼到新的 Git 託管伺服器上的話,可以通過以下步驟來操作。 1). 從原地址克隆一份裸版本庫,比如原本託管於 Git

使用git reflog 命令來檢視歷史提交記錄使用提交記錄恢復已經被刪除掉的分支

一、問題描述 昨天下午有個同事急急忙忙跑我座位上,要我幫忙,說他剛剛因為手誤,將他本地的某個project的某個branch分支刪除了,並且也將Gitlab上面的遠端分支也刪除了。他本來是想發起merge request的,但是後面他眼神不好以為已經merged過了,就直接刪了Gitlab上的遠

Git學習】使用git reflog 命令來檢視歷史提交記錄使用提交記錄恢復已經被刪除掉的分支

一、問題描述 昨天下午有個同事急急忙忙跑我座位上,要我幫忙,說他剛剛因為手誤,將他本地的某個project的某個branch分支刪除了,並且也將Gitlab上面的分支也刪除了。他本來是想發起merge request的,但是後面他眼神不好以為已經merged過了

Git倉庫遷移保留提交記錄

一、建立新倉庫1、從原地址克隆一份裸版本庫git clone --bare https://[email protected]/bitbucket/scm/sup/kos_datasync.g

合併兩個git倉庫,保留每個倉庫的歷史

     問題:有兩個git倉庫 repository1和repository2,想把repository2合併到repository1,並在repository1中保留repository2的所有分支歷史    方案:  1.在repository1中新增遠端分支,,跟蹤

git倉庫刪除所有提交歷史記錄

-a git tac gin checkout git push 分支 init tail stackoverflow原問題地址:http://stackoverflow.com/questions/13716658/how-to-delete-all-commit-hi

g4e基礎篇#6 了解Git歷史記錄

ron 表示 git merge none 這一 如果 代碼 工具 lin 章節目錄 前言 1. 基礎篇: 為什麽要使用版本控制系統 Git 分布式版本控制系統的優勢 Git 安裝和設置 了解Git存儲庫(Repo) 起步 1 – 創建分支和保

git刪除所有提交歷史記錄

mes 代碼 upd 本地 delete 並且 one IT ren 把舊項目提交到git上,但是會有一些歷史記錄,這些歷史記錄中可能會有項目密碼等敏感信息。如何刪除這些歷史記錄,形成一個全新的倉庫,並且保持代碼不變呢? 以下方法是在當前的分支下新建一個分支,然後把之前分支

git修改歷史記錄

-- mit 修改 inter bsp tro 編輯 rac div 1.git stash2.git rebase 45c2d5c --interactive 3.git stash pop4.git add5.git commit --amend 確認編輯後

svn遷git保留commit記錄

itl files xxx found 導致 error failed pro 保留 svn to git 一.使用svn2git工具 1.yum install -y ruby git git-svn(配置epel源) 2.gen install svn2git 3

Git 代碼恢復到一個歷史的版本

msu space 自己 需要 round tran ever class push Git 將代碼恢復到一個歷史的版本 要把代碼回到某個歷史版本 比如 test有兩種方法 暴力的方式 如果你的倉庫是自己在用(不影響別人),那麽你可以使用 git reset --hard

python之保留有限的歷史記錄(collections.deque)

完美 檢查 簡單 pre from 史記 功能 pat tor 1、deque(maxlen=N)創建一個固定長度的隊列,當有新的記錄加入而隊列已經滿時,會自動移除老的記錄. from collections import deque q = deque(maxlen=3