またシェルスクリプトネタです。 Githubで直接ファイルを書き換えてコミットする際、任意の入力が無ければ “Update README.md” のように行われた事実がコミットメッセージになりますよね。 これをコマンドラインでの作業でもやりたいと思って簡単なスクリプトを書きました。 nobuyo/committer git statusからステージングされている変更を拾ってきてコミットメッセージとして返してくれます。 簡素な仕様ですが、分かればいい程度で自分だけのリポジトリをちょっと書き換えるときに若干べんりです。 例えば以下のような感じになります。変更の事実がそのままコミットメッセージになっている様子が確認できます。 git本体へのオプション等には干渉しないので、ステージされた変更があるのにgit commit -amしたときなんかはコミットの精度が低下します。 % git status On branch master Your branch is up-to-date with ‘origin/master’. Changes not staged for commit: (use "git add <file>…" to update what will be committed) (use "git checkout – <file>…" to discard changes in working directory) modified: .zshrc no changes added to commit (use "git add" and/or "git commit -a") % git commit -am "$(committer)" # here [master 8e3fa69] modify .
Continue reading

きっかけ 一般ユーザーでUbuntuを利用していて、gitが使えなくてつらかった。 gitをビルド なければソースからコンパイルしましょう。管理者権限がないために、依存パッケージのインストールにもパッケージマネージャが使えないという制約がありますので、そのあたりも一緒にインストールします。最終的にインストールする必要があるものは次のとおり。(環境によっては増減があるかもしれません。) zlib openssl curl(libcurl) expat git ソフトウェア5つをすべてwgetしてtarで展開してconfigureしてmakeして…とやっていると大変なので、順番どおりにやってくれるbashスクリプトを使いましょう。 野原のようなシステムにgitを持ってピクニックに行こう、ということでpicnicと名づけました(n番煎じ)。 nobuyo/picnic ハマったところ ビルドは成功してもcloneできなかった問題でドハマりしました。 git clone https://… Cloning into ‘~~~’ fatal: Unable to find remote helper for ‘https’ libcurl-devパッケージの不足またはgitのビルド時にhttpsプロトコルを扱うcurlのライブラリが正しくリンクされないことが原因で起こる現象の様ですが。 環境変数LD_LIBRARY_PATHをexportして解決しました。
Continue reading

git初心者なので、ちょっと直してリモートpushしたと思ったらすぐに次のミスが見つかるようなことが少なくない。 そんな時にいちいちuserとpassを入力するのが嫌になってきたので、pushする際のプロトコルを変更する方法を調べ、ついでにシェルスクリプトを作った。 gitのリモートリポジトリのURL変更 remoteのURLを変更するにはgit remote set-urlを、現在のurlを確認するにはgit remote -vをそれぞれ使うらしい。 以下を参考にしました。 gitのリモートリポジトリoriginのURLを変更する git リモートリポジトリのURLを変更するコマンド コマンド一発で変更 単純にsshとhttpsをスイッチしたいだけだったので以下のようなスクリプトをパスの通った所に配置して使うことにした。 ちなみに本体はここで管理している。 gitリポジトリに移動して $ gitch ✔ Change origin URL…OK new remote: origin git@github.com:(username)/(repo).git (fetch) origin git@github.com:(username)/(repo).git (push) ちなみにもう一回叩くとhttpsになる。 $ gitch ✔ Change origin URL…OK new remote: origin https://github.com/(username)/(repo).git (fetch) origin https://github.com/(username)/(repo).git (push) これでhttpsでcloneしたリポジトリを、コマンド1つでsshに切り替えてpushできるようになった。 おしまい。
Continue reading

Author's picture

nobuyo

student of nit

JS/Rails

Nagano, Japan