問題タブ [svn2git]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - フラットな svn リポジトリを git リポジトリに移行するにはどうすればよいですか
次のようなフラットな svn リポジトリがあります。
このリポジトリにはブランチもタグもありません。私がやろうとしているのは、それを git リポジトリに変換してコミット履歴を維持することだけです。
私が試してみました:
git svn clone --trunk=/ -A users.txt svn+ssh://user@svn.example.com/projects/my_repo dest_dir
これはうまくいくと思いましたが、ナビゲートしdest_dir
て実行するとgit svn fetch
、何も取得されないようです。git log
利回りの使用:
fatal: bad default revision 'HEAD'
使用すると、次のようsvn checkout svn+ssh://user@svn.example.com/projects/my_repo
に返されます。
したがって、リポジトリは有効でアクセス可能です。
subgit
このエラーが発生するなど、さまざまなツールを試しましたがsvn: E170003: 'stat' not implemented
、これは、リポジトリをホストしているサーバーが古いバージョンのサブバージョンを使用しているためだと思います。サーバーを制御できないため、更新を実行できません。
svn2git
コマンドを使用して、 も使用してみました
svn2git svn+ssh://user@svn.example.com/projects/my_repo --rootistrunk -authors users.txt --verbose
しかし、これは私に別のエラーを与えていました:
E: 'svn+ssh:/user@svn.example.com/projects/my_repo' is not a complete URL and a separate URL is not specified command failed
これは私を困惑させ、なぜそれが機能しないのかわかりません。基本的に、履歴を維持しながらsvnリポジトリをgitリポジトリに変える方法を考えていました。誰かが私を助けてくれるか、正しい方向に向けてくれることを願っています。この単純なレポを git に転送するのがこんなに難しいとは思いもしませんでした!
ありがとう
linux - svn2git - 「ホット マイグレーション」はファイルのパーミッションを保持します
SVN を Git に移行しています。プロジェクトで。
すべて順調ですが、追跡されていない (無視された) ディレクトリとファイルのアクセス許可 (ファイル モード) を保持することに問題があります。以下の処理を行います。
- SVM リポジトリのクリーンアップ (片付け、コミットされていないものなどのクリーンアップ)
- ローカル環境での svn2git (ネットワーク化された SVN からの移行 - 最新のリビジョン、それ以上のコミットはありません。これには、
authors.txt
ブランチ、タグなどの適切なマッピングと適切な追跡が含まれます) - 無視されたファイルとディレクトリの作成 (.gitignore)st - から部分的に自動化され
svn propget
、手動仕上げ (行ごと) リモートを追加してプッシュします(githubを使用していますが、ほとんど問題にはなりません)
この段階でリモートの準備が整い、すべての履歴が変換されます。ディレクトリを変更したり、ファイルを移動したり、シンボリックリンクを作成したりせずに、サーバーの展開をホットマイグレーションしたいという難しい部分があります。2 つのミラーリングされた環境が 2 つの異なるサーバー上にあるとします。1 つはベータ用で、もう 1 つは製品用です。
/var/www/depl/
dir がたとえば / であるとしましょう。問題は、すべての Web プロジェクトと同様に、追跡する必要のないディレクトリとファイルがあるということです。 他の人にとっても良いガイドになると思うので、コマンドを使用して手順を書きます。したがって、サーバー上の戦略は次のとおりです。そこに行く
cd /var/www/depl/
- 経由で別のディレクトリにバックアップし
rsync
、権限をそのまま保持します!! - すべての .svn ディレクトリを再帰的に削除します
find -type d -name .svn -exec rm -rf {} \;
- 空の git リポジトリを初期化し
git init
ます (「ベア」リポジトリを使用していないことに注意してください) - GitHub リモートを追加して「origin」と呼び、すべてのブランチもダウンロードします
git remote add -f https://github.com/ORG/REPO
- ステータスを確認する (ローカル コピーはクリーンである必要があります)
- プル(つまり、フェッチ+マージですが、実際にはマージのみです)
git pull origin master
この最後のステップは、私の権限を壊すものです。追跡したくない/追跡する必要のないファイルを覚えていますか? 現在、それらの権限が変更されているようです。それらはすべて適切に無視されますが、プル/マージを適用すると壊れます。OK、確かに問題はリモート リポジトリから、マージ経由で発生しています。それは問題ではなく、ファイルがどのようにコミットされたか (どのファイルモードで) かです。
問題は 、最後のステップで、更新を取り込むときに、すべてのファイルの現在のファイル許可を保持するように git に指示できますか? 現在のディレクトリのように、再帰的にダウンしますか? では、ローカルのアクセス許可を変更しないでください。
はい、後でコミットする差分などがあるかもしれませんが、それはパーミッションの破損ほど大きな問題ではありません。
そう?方法はありますか?サーバーはもちろん Linux を実行しています。
前もって感謝します。
乾杯!
windows - svn2git 移行後の git サブツリー分割の問題
git2svn コマンド ライン ツールを使用して、入れ子になった大規模な SVN リポジトリを git に変換したところ、git リポジトリが次の場所に作成されました。D:\project
Repo フォルダー構造は次のとおりです。
\web\projectA
新しい git リポジトリに抽出して、github にアップロードしたいと考えています。
いくつかの調査の後、私は使用しましたgit subtree split --prefix=web\projectA -b justprojectA
ただし、subtree コマンドを実行した後の新しいブランチには、リポジトリのルートからのすべてのフォルダーが含まれており、まったく機能していないようです。
Windows 7 で git shell を使用しています。
git - SVN から git への移行では .git フォルダーのみが作成される
svn から git に移行しようとしています。以下のツールを使ってやってみました
ただし、両方のツールは、.git
ファイルとフォルダーをチェックアウトせずに、フォルダーのみを作成しました (作業コピーを話します)。
git-svn
私は以下を実行しようとしました
私は正確に何を間違っていますか?
ps グーグルを試してみましたが、すべてのブログで、これらのコマンドの両方がすべてのファイルとフォルダーを含むローカル リポジトリを作成する必要があると主張しています。また、hg convert を使用して svn プロジェクトを mercurial プロジェクトに変換したこともあります。svn プロジェクトを mercurial プロジェクトに変換した後、hg up などを実行して、プロジェクトのすべてのファイルとフォルダーを取得し、そのプロジェクトを mercurial サーバーに簡単にプッシュできました。ここにあるのは .git フォルダーだけです。どのステップが欠落しているか、正確に何が間違っていますか?
ruby - svn2git gem のインストール エラー (EADDRNOTAVAIL)
実際のプロジェクトで使用する前に、テスト PC で svn2git を使用しようとしています。そのため、tortoiseSVN をインストールし、ローカル リポジトリで SVN を使用するプロジェクトを作成しました (ローカル ネットワークでのみテストを行い、PC は他のアイテムに接続されていません)。
テスト用に GIT (V 1.9.5-preview20150319) をインストールし、gem を使用するために V2.2.2 に Ruby をインストールしました。私はこのリンクをたどりました: http://www.troyhunt.com/2014/08/migrating-from-subversion-to-git-with.html
しかし、コマンド「gem install svn2git」を入力しても機能せず、次のエラーが表示されます:
ERROR : while executing gem ... (Errno::EADDRNOTAVAIL)
The requested address is not valid in its context - connect(2) for "0.0.0.0" port 53
svn2git-2.3.2 をダウンロードし、Ruby22\lib\ruby\gems\2.2.0\gems\svn2git-2.3.2 に配置しました。
何か提案があれば..ありがとう