質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

SVN

SVNは、CollabNet社が開発したソースコードなどを管理する集中型のバージョン管理システムです。 Subversionとも呼ばれ、CVSの問題点を解決すべく開発された次世代のバージョン管理システムとして開発されました。基本的なコマンドはCVSと共通しています。複数人の開発者が共同でひとつのソフトウェアの開発にあたるときなどに、ドキュメント及びソースコードなどを管理するのに使用されます。

Q&A

解決済

1回答

2653閲覧

SVNで使用した一部ファイルをGitHubへエクスポートしたい gitファイル変換あたりで詰まっている

Hirakin3

総合スコア33

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

SVN

SVNは、CollabNet社が開発したソースコードなどを管理する集中型のバージョン管理システムです。 Subversionとも呼ばれ、CVSの問題点を解決すべく開発された次世代のバージョン管理システムとして開発されました。基本的なコマンドはCVSと共通しています。複数人の開発者が共同でひとつのソフトウェアの開発にあたるときなどに、ドキュメント及びソースコードなどを管理するのに使用されます。

0グッド

1クリップ

投稿2018/02/23 03:31

編集2018/03/01 07:33

SVNに取り込む方法を参考にしていますが、エラーが出ており対応方法がわかっていません。

やってみた内容を記載しているので、「違うよ!」という点あれば是非是非アドバイスをいただきたいです。

やりたいこと

  • SVNで過去に管理してたファイル(ローカル)をSVNに取り込みGitへエクスポートしたい。
  • 管理ファイル全体ではなく、1つのリポジトリのみ

ファイルの内容

ファイルは2つ
外注先から納品されたファイルのため全て保存する方針

  • 20GB ほどのdumpファイル
  • 15BG ほどのソースと思われるファイル

イメージ説明
イメージ説明

作業環境

  • PCはMACを使用しています
  • ストレージに保存されていたファイルを使用
  • GituHub環境はすでに使用中
  • SVNサーバ環境は構築していない
  • SVNはローカルにインストール済
$ svn --version svn, version 1.9.4 (r1740329) compiled Nov 6 2017, 18:06:35 on x86_64-apple-darwin16.1.0 Copyright (C) 2016 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/ The following repository access (RA) modules are available: * ra_svn : Module for accessing a repository using the svn network protocol. - handles 'svn' scheme * ra_local : Module for accessing a repository on local disk. - handles 'file' scheme * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - using serf 1.3.8 (compiled with 1.3.8) - handles 'http' scheme - handles 'https' scheme The following authentication credential caches are available: * Plaintext cache in /Users/user/.subversion * GPG-Agent * Mac OS X Keychain

作業フォルダ構成

svn(フォルダ)
┗ svn.dump
┗ tar zxvf ファイル名.tar.gz

参考にする記事

以下記事を参考に作業を試みています
https://qiita.com/yakumo/items/b8531f44671d6781a2d3

↓記事内のこちらは無くても問題なさそうなのでやっていません
※Subversionアカウント名->gitメールアドレスの読み替えファイルを作る

作業記録

ストレージに保存されていたファイル(過去にSVNで管理していた)をローカルへダウンロード

ファイルの解凍

tar zxvf ファイル名.tar.gz

イメージ説明

作業フォルダ構成

svn(フォルダ)
┗ svn.dump
┗ repos (フォルダ)

subversionリポジトリ作成

svnadmin create svnimport

作業フォルダ構成

svn(フォルダ)
┗ svn.dump
┗ repos (フォルダ)
┗ svnimport (フォルダ)

ダンプファイルのロード

svnadmin load svnimport/ < svn.dump
$ svnadmin load svnimport/ < svn.dump <<< Started new transaction, based on original revision 1 * editing path : ProjectName ... done. * editing path : ProjectName/branches ... done. * editing path : ProjectName/tags ... done. * editing path : ProjectName/trunk ... done. * editing path : CourseEditor ... done. * editing path : CourseEditor/Assets ... done. * editing path : CourseEditor/Assets/Project Course Editor ... done. * editing path : CourseEditor/Assets/Project Course Editor/Plugins ... done. * editing path : CourseEditor/Assets/Project Course Editor/Plugins/PlayerPrefs.cs ... done. * editing path : CourseEditor/Assets/Project Course Editor/Plugins/PlayerPrefs.cs.meta ... done. * editing path : CourseEditor/Assets/Project Course Editor/Plugins.meta ... done. * editing path : CourseEditor/Assets/Project Course Editor/Scene ... done. ~~~~~長いため省略~~~~~ ------- Committed revision 7596 >>> <<< Started new transaction, based on original revision 7597 * editing path : ProjectName/trunk/CheckSheet/Changes_V1_2(内部用資料).xlsx ... done. ------- Committed revision 7597 >>> <<< Started new transaction, based on original revision 7598 * editing path : ProjectName/trunk/Patch/Banner/ProjectNam_JP.bsf ... done. ------- Committed revision 7598 >>> <<< Started new transaction, based on original revision 7599 * editing path : ProjectNam/trunk/ProjectNam/Sources/GameObjects/BOSS/BossTaskCheck.cpp ... done. ------- Committed revision 7599 >>>

svnimportリポジトリにファイルが追加されたことを確認

ローカルにSubversionサーバーを立てる

参考に記事に書いてあった内容をそのまま実行

svnserve -d -R --foreground --root svnimport/

動いているか確認

$ ps aux|grep svn user 46101 0.0 0.1 2444560 8668 s000 S+ 12:31PM 0:00.04 /Library/Developer/CommandLineTools/usr/bin/svnserve -d -R --foreground --root svnimport/ user 94027 0.0 0.0 2450212 1740 s001 R+ 3:48PM 0:00.00 grep svn

新規ターミナルを開く

作業フォルダ構成

svn(フォルダ)
┗ svn.dump
┗ repos (フォルダ)
┗ svnimport (フォルダ)

gitリポジトリ生成

$ git svn init -s --prefix=svn/ svn://localhost/ svngitexport/ Initialized empty Git repository in /Users/user/Documents/svn-gitexport/.git/

作業フォルダ構成

svn(フォルダ)
┗ svn.dump
┗ repos (フォルダ)
┗ svnimport (フォルダ)
┗ svngitexport (フォルダ)

作成したリポジトリに移動

$ cd svngitexport

Subversionリポジトリ内容をgitに変換(取込)

git svn fetch

この時点でsvngitexportリポジトリを確認しましたが、ファイルは見当たりません
.gitフォルダのみ作成されています

git clone を試す

git svn clone svn://localhost/
r3000 = 13557ea4bfcf6a2fb0ea5459632b85cee3c0e736 (refs/remotes/git-svn) Auto packing the repository in background for optimum performance. See "git help gc" for manual housekeeping. error: The last gc run reported the following. Please correct the root cause and remove .git/gc.log. Automatic cleanup will not be performed until the file is removed. warning: There are too many unreachable loose objects; run 'git prune' to remove them. gc --auto: command returned error: 255

絶対パスに変更してgit svn clone

git svn clone file:///home/user/repos

ファイル数が多いことでのエラー?

Auto packing the repository in background for optimum performance. See "git help gc" for manual housekeeping. error: The last gc run reported the following. Please correct the root cause and remove .git/gc.log. Automatic cleanup will not be performed until the file is removed. warning: There are too many unreachable loose objects; run 'git prune' to remove them. gc --auto: command returned error: 255

この記事を参考に対応

https://takanosho.wordpress.com/2016/01/21/fix-running-git-gc-on-every-merge/

$ git gc –-aggressive usage: git gc [<options>] -q, --quiet suppress progress reporting --prune[=<date>] prune unreferenced objects --aggressive be more thorough (increased runtime) --auto enable auto-gc mode --force force running gc even if there may be another gc running
$ git gc Nothing new to pack.

できていない

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2018/02/23 04:13

VirtualBoxを使って適当な仮想Linuxサーバーをでっち上げた方が100倍楽だと思います。Vagrantも併用すればコマンド一撃みたいなもんですが、出来ない理由でもありますか?
Hirakin3

2018/02/23 04:39

ご回答ありがとうございます。容量の問題でしたが、なんとかならないか試行錯誤しています。エクスポートしたいファイルが30Gほどあるので。
miyabi-sun

2018/02/23 05:59

うへ…そんなにあるんですか…、Gitのリポジトリに変換したらファイルサイズ幾つになる予定ですか?GitHubの限界って2GBとかそこらだったような…
Hirakin3

2018/02/23 06:06

サイズはあまり変わらないと思われます。ファイル内容によりますが、分割もできないファイルはGitHub以外で管理予定です。仰るようにGitHubだと容量不足と、管理方法として適切でなさそうなので。
miyabi-sun

2018/02/23 08:35

エラーメッセージを和訳すると「'svn://localhost'に接続しようとしたが接続出来ませんでした」と書いてありますが、普通にlocalhostはSVN鯖として動作していますか?
Hirakin3

2018/02/23 08:51

ご指摘ありがとうございます。恥ずかしながら確認方法を教えていただくことは可能でしょうか?
miyabi-sun

2018/02/23 09:12

SVNを使ってた時代は私はTortoiseSVNにおんぶ抱っこでしたので、あまりちゃんとした回答は出来ないのですが、TortoiseSVNを使ってローカルに立ち上げたSVNサーバへ接続して何処か適当なディレクトリにダウンロードしてはいかがでしょうか?
miyabi-sun

2018/02/23 09:15

そして、そもそもSVNの履歴全てをGitに持っていかなければならないのでしょうか?最新だけでよくないです?Gitから削るファイルもあるから完全には戻れませんよね。めぼしい幾つかのバージョンの状態にロールバックしながら手作業でGitに登録していくという手法もありだと思います。
Hirakin3

2018/02/28 01:21

アドバイスありがとうございます。SVNの構築からが難しいため今回の方法にしています。
guest

回答1

0

ベストアンサー

参考にされているサイトを見てみましたが、

svn => git 変換時に file:// は使用できないので、サーバーをローカルに立ち上げる。

これは、この事ですかね。

要はsubversionのdbのバージョンの違いであるから、かならずしもできないという話ではなさそうなので、とりあえずサーバを立てずに、「svn://localhost」ではなく「file://<レポジトリの絶対パス>」で試してみてはいかがでしょうか。

もしダメでも、

  1. 元のsvnレポジトリを「svnadmin dump」してバックアップを取る。
  2. 新しいsvnレポジトリを作り、そちらで「svnadmin load」をしてバックアップを復旧する。

としてレポジトリを作りなおせば、いけそうな気もしなくはないです。ダメ元でも良ければ、試してみてください。
(数GBもあると時間がかかると思いますが)

投稿2018/02/23 15:26

katsuko

総合スコア3462

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hirakin3

2018/03/01 02:00

アドバイスありがとうございます。 git svn clone svn://localhost/ を実行するという意味でよかったでしょうか? やってみたところ、エラーが発生し、どうすれば良いのかわからず調べています
katsuko

2018/03/01 02:13

「git svn clone file://<レポジトリへの絶対パス>」を実行してください。 (「レポジトリへの絶対パス」は、「/home/user/repos」であれば「file:///home/user/repos」になります)
katsuko

2018/03/01 04:35

エラーメッセージを見る限り、もはや「svn:」や「file:」などのurlの問題じゃなさそうですね。 エラーメッセージで検索したら以下のページが引っかかったので、参考にしてみてください。 https://takanosho.wordpress.com/2016/01/21/fix-running-git-gc-on-every-merge/ (調べてみると、gcの警告メッセージのようですから、もしかすると移行自体はすでにできているかもしれませんが)
Hirakin3

2018/03/01 07:35

ありがとうございます、GitのDocumentationを見ると、ファイル数の問題なのかもしれません。いただいた記事を試していますが、、詰まってます。
katsuko

2018/03/01 08:24

なんか、git-gcの結果がおかしいような気がしますが。(正しく「--aggressive」オプションを指定しているのにusageが出力されたり) どちらかと言えば「git prune」の方が重要な気がします。 「warning: There are too many unreachable loose objects; run 'git prune' to remove them.」ですから、無駄な物が沢山残っている、と言っているようです。 とは言うものの、私もgcやpruneはやったことはないので、ご自身でもよく理解してから実行してください。 (一応探すと、こんな所が参考になるような気がします) http://za.toypark.in/html/2008/01-29.html
Hirakin3

2018/03/02 09:54

アドバイスありがとうございます。 色々試した結果なんとか解決できそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問