1回で複数のリモートoriginに`git push`する
SVCはバックアップという使命もあるので、特に重要なものを以下のTipsを参考に複数のリモートリポジトリにpushできるようにした。
サブのリモートに対して直接pushするとややこしくなると思うので、メインのリモートに不具合が生じたときなどにサブのリモートからでもpullできるというだけのメリットだが、これが保険として役に立つときがあるのも困るのである。
SVCはバックアップという使命もあるので、特に重要なものを以下のTipsを参考に複数のリモートリポジトリにpushできるようにした。
サブのリモートに対して直接pushするとややこしくなると思うので、メインのリモートに不具合が生じたときなどにサブのリモートからでもpullできるというだけのメリットだが、これが保険として役に立つときがあるのも困るのである。
Githubには、パブリックリポジトリとプライベートリポジトリがあって、Freeプランの場合、プライベートリポジトリのは容量的な制限があったが、最近仕様変更がありFreeプランでも容量無制限になったらしい。実行時間には制限があるが個人的な用途では実用上問題ないと思う。
ただ、現状のルールが未来永劫保証されることはなく、再び制限が厳しくなる可能性も考えられるので、プライベートリポジトリをレンタルサーバーのxserverへ引っ越すことにした。
PrivateリモートリポジトリをGithubからxserverへ引越しさせた。xsrverには、デフォルトでgitインストール済みで特に不自由は感じなかったのだけれど、かなり古いバージョンだったので最新版をインストールした。
前者のTipsは、~/local/bin/
へinstallするというものだったけれど上手く行かなかった。
後者のTipsを試して最終的には成功したのですが、若干説明不足というか補足が必要な感じなので備忘録として残すことにした。
$ cd tmp # 作業ディレクトリへ移動
$ wget https://ftp.gnu.org/gnu/gettext/gettext-0.21.tar.gz
$ tar zxf gettext-0.21.tar.gz
$ rm gettext-0.21.tar.gz
$ cd gettext-0.21
$ ./configure --prefix=/home/YOUR USERNAME/opt
$ make install
インストールが成功したらmsgfmt のインストールを確認します。 無事バージョン情報が表示されたら成功です。
$ ~/opt/bin/msgfmt --version # msgfmt のインスト―確認(インストールしたバージョン情報が表示されればOK)
$ cd ..
$ rm -rf gettext-0.21 # 不要になったので削除
$ cd
$ which msgfmt
としても存在しないと叱られるので.basrc
にPATHを設定します。
vim ~/.bashrc
として下記の行を追加します。
# msgfmt
export PATH=$HOME/opt/bin:$PATH
終わったら、設定を適応させて確認します。
$ source .bashrc
$ which msgfmt # パスを通したのでインストール先の確認
~/opt/bin/msgfmt # インストール先が表示されればOK
$ cd tmp # 作業ディレクトリへ移動
$ wget https://www.kernel.org/pub/software/scm/git/git-2.30.0.tar.gz
$ tar zxf git-2.30.0.tar.gz
$ rm git-2.30.0.tar.gz
$ cd git-2.30.0
$ ./configure --prefix=/home/YOUR USERNAME/opt
$ make all
$ make install
$ ~/opt/bin/git --version # git のインスト―確認(インストールしたバージョン情報が表示されればOK)
$ cd ..
$ rm -rf git-2.30.0 # 不要になったので削除
先の設定で ~/opt/bin
にはすでにPATHが通っているので、確認する。
重要なファイル群をDropboxに配置し複数端末で共有している。Dropbox だけでも多少の履歴は辿れるけれど、さらに保険をかける意味でGitHubにもリポジトリを作ってみようと思った。
Dropbox内にgitツリーを置くとややこしくなろそうなのでDropbox外の別デレクトリにtreeをおくというTipsを見つけて真似してみた。
$ cd ~/Dropbox/project
$ git init --separate-git-dir /path/to/project.git
Initialized empty Git repository in /path/to/project.git/
上記を実行すると、Dropboxデレクトリにあった .git
デレクトリは、/path/to/project.git に移動し、もとのデレクトリには、以下の内容の .git
というファイルが生成される。内容はリンク先を書いただけのテキストファイルなのだが、Dropboxデレクトリでは普通に magit-status
できる。
gitdir: /path/to/project.git
もし、将来ローカルリポジトリのPCをクリーン再インスールするケースを想定してテスト用のリポジトリで試してみた。
mkdir /path/to && cd /path/to
してgit clone priject.git
する。
データリポジトリは、Dropboxをインストールして同期すれば、自動的にリストアできるので、.git
デレクトリのみ残してデータは削除して良い。