自分の作業用ローカルリポジトリでコード編集などしていて、中央サーバーにあげるまでもないが、他ユーザーに公開したいということがあります。前回はそれで git daemon の機能で公開を試みた、という感じだったのですが、ちょといまいちな結果で終わってしまいました。
結局公開用リポジトリを作業用PCに準備して、それを他ユーザーに公開する、という流れになるわけですが、作業用ローカルリポジトリ作成した段階ではどこからcloneしたわけでもなかったりするので、まずは作業用ローカルリポジトリから、公開用リポジトリを作成することが必要になってきます。
そのコマンドは以下のようになります。
git clone --bare (作業用ローカルリポジトリパス) (公開用リポジトリパス)
これで作業用から公開用を作成することができます。
またこれと同じことを tortoiseGit でやるためには Clone メニューから下記のような感じで設定することでできます。
あとはこの公開用リポジトリパスを公開設定すればOKです。
Windowsなら、Windowsのファイル共有で公開してしまう方法が、楽だとおもいます。
受け取る側もこのWindowsファイル共有上でのファイルパス情報をもらって、cloneすることができます。
コマンドライン git でやる場合の注意点としては、パス区切りとしての円マーク(¥)を / を使わないといけないことでしょうか。tortoiseGitの場合には、このあたりはWindowsパス文字列で問題ないようです。
git clone //PC-Name/ShareFiles/PubRepos clonedPath
Linuxからアクセスするには
Windowsファイル共有で公開した場合には、Linux側でこのフォルダを cifs ファイル共有としてローカルにマウントしてしまうのがよいと思います。
このとき、rootのみファイル書き込み権限があるためにマウント時には少々オプションが必要になります。
# mount -t cifs //PC-Name/ShareFiles /mnt/shareRepos -o username=UserName,password=Password,dir_mode=0777,file_mode=0775
パスワード制限されていたりするとユーザー名&パスワードの情報が必要になります。またマウント後、対象ディレクトリが書き込みできるかどうかパーミッションを確認しておくことが必要です。
問題が無ければ、このマウントしたパスから git clone することでリポジトリのcloneができます。ここまでできればpushもうまくできるようです。