Archit!! RSSフィード Twitter

2016-10-19

Gitでリモートmasterブランチの巻き戻し

GitHubの有料のプライベートリポジトリ数が無制限になったのを機に、いままでVPS上で管理していたSubversionリポジトリをちまちまGitHubに移している。幸い、インターネット上でアクセス可能なSubversionリポジトリなら、GitHub自動でインポートしてくれる機能がある。これを使えば、簡単にリポジトリの移管ができる。しかも、コミット履歴や、タグ、ブランチもそのまま移管してくれて、非常に便利。

ところで、あるプロジェクトのリポジトリを移管して少し困ったことが起こった。簡単に言うと、リモート上のmasterブランチをあるコミットポイントまで巻き戻したいのだ。これだけなら簡単なのだが、現時点のソースコードも別ブランチとして残しておきたいのだ。図にすると、

f:id:architshin:20161019151514p:image:w360

の状態を

f:id:architshin:20161019155620p:image:w360

にしたいのだ。手順としては、以下のようになる。

  1. ブランチを作成してpushする。この時点で、ローカルもリモートも
    f:id:architshin:20161019153431p:image:w360
    のようになる。
  2. リモートのmasterブランチを削除する。この時点で、リモートは
    f:id:architshin:20161019153105p:image:w360
    のようにhogeブランチのみになる。
  3. ローカル上でmasterブランチを指定のポイントまで巻き戻す。これは、例えば、指定ポイントのコミットIDが「84fds587」とするなら、
    % git reset 84fds587
    で可能。これで、ローカル上では
    f:id:architshin:20161019155759p:image:w360
    が実現できたことになる。
  4. 最後に、このmasterブランチをリモートにpushすれば、できあがり。

Gitでリモートリポジトリを巻き戻す - @tmtms のメモの記事が参考になった。

2016-04-08

MacでPleiades All in One Eclipse Mars

最新版のEclipse Mars(4.5)を使おうと思って、ダウンロードしてみた。Windows版はPleiades All in OneのFull Editionを使用すれば問題ない。Mac版は自分で作らないといけないので、MacでPleiades All in One Eclipse - Archit!!の方法でやろうとしたら、Marsではできない。というのは、MacMarstarファイルをダウンロードして解凍すると、なんと、フォルダではなく.appファイルになるのだ。

そこで、慌てずに、.appファイルを右クリックし、「パッケージの内容を表示」を選択して、中身を見てみると、なんのことはない、今までフォルダになっているのがそのまま.app内に入っただけ。そのまま

Contents > Eclipse

と中に入っていけば、「dropins」、「features」、「plugins」と各フォルダがある。これらのフォルダに対して、MacでPleiades All in One Eclipse - Archit!!の方法で、pleiades内のplugins、features、dropinsのフォルダ内のものをコピーする。さらに、今回からは「configuration」フォルダのものもコピーする。

もう1点注意しなければならないのは、eclipse.iniの記述。以下の3点を行う。

  1. 最終行に以下の2行を追記する。
    -Xverify:none
    -javaagent:../Eclipse/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
  2. 起動スプラッシュPleiadesのものに変更するために、以下の2行をコメントアウトする。
    #-showsplash
    #org.eclipse.platform
  3. ファイルのエンコードも指定しておこう。
    -Dfile.encoding=UTF-8

設定後、もし心配なら、以下のコマンドでクリーン起動を行っておこう。

/Applications/Eclipse.app/Contents/MacOS/eclipse -clean

2015-11-27

AndroidStudioを1.5にあげたらビルドエラー

AndroidStudioを起動したら、1.5が可能ですとメッセージがでたのでアップデートしてみた。

そして、あるプロジェクトを開いたら、以下のようなエラーメッセージが表示されてビルドできない。

Error:/Applications/Android Studio.app/Contents/gradle/gradle-2.4/lib/plugins/gradle-diagnostics-2.4.jar (No such file or directory)

これは、どうも、Gradleの参照バージョンに原因があるらしい。修正方法は以下の通り。

gradle-wrapper.propertiesの修正

gradle/wrapper/gradle-wrapper.propertiesのdistributionUrlを以下に修正。

distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip

build.gradleの修正

プロジェクト直下のbuild.gradleのdependenciesのclasspathを以下に修正。

dependencies {
   classpath 'com.android.tools.build:gradle:1.5.0'
}

その後、BuildメニューからClean Projectを行えばよい。

なお、不思議なのだが、これはMacOSで起こる現象で、Windowsでは確認していない。

この件は、こちらが参考になった。

2015-10-14

Android StudioとSVNでエラー

Android開発において、Eclipseがサポートされなくなったので、Android Studioに乗り換え中。長年Eclipseを使ってきているので、ギリギリまで乗換えを引き伸ばしていたが、サポートされなくなってしまったのなら、仕方がない。まあ、Eclipse+ADTはJava6 - Archit!!にも書いたが、Eclipseの場合はADTがJava6環境でないとダメなので、メリットは大きい。

Eclipseで作ったプロジェクトを移植しつつ、Android Studioでのワークフローを構築中なのだが、Subversion連携中に以下のエラーがでた。

Cannot run program "svn" (in directory "…"): CreateProcess error=2, …

他の作業はわりとすんなりいったのだが、ここで躓いた。いろいろ調べてみたのだが原因は単純。

f:id:architshin:20151014135235p:image

設定画面の

Version Control > Subversion

のGeneralタブにおいて、「Use command line client」のチェックボックスが入っているとエラーが起きる。なので、このチェックをはずせばよい。

Android StudioSubversionの1.6と1.7に関しては標準でサポートしている。この場合は内部のSVNクライアントを使うので問題なくサーバとやり取りができる。ところが、Subversionの最新版は1.8である。もし、1.8でサーバとやり取りしたい場合は別途クライアントインストールする必要があり、その場合は、このチェックを入れてインストールしたクライアントを指定するのだ。

結局、このチェックボックスデフォルトでチェックされていることが問題なのだ。

2015-02-01

Eclipse+ADTはJava6

新しいMacBookPro(Yosemite)のEclipse+ADTAndroidのプロジェクトを作ると、エラーが起きた。

f:id:architshin:20150201132254p:image:w250,left

いつもは、Windowsでプロジェクトを作成し、それをSVNからチェックアウトするという開発スタイルだったのだが、ある時、MacBookPro上でプロジェクトを作る必要があって、そこで初めて気づいた。ちなみに、古いMacBook(Mountain Lion)は全く問題なくプロジェクトが作成できる。

あーだこーだ、と調べたり実験した結果、原因がはっきりした。

MacBookProにインストールされているJava VMのバージョンの問題だった。新しいMacということで、OracleからJava7をダウンロードしてインストールしてある。これが問題。

Androidの開発者サイトを読むと、開発環境要件としてちゃんと「JDK6」と書かれている。そりゃあ、あかんわ。

そこで、Java6をインストールすることに。Java VMはひとつのマシンに混在可能なので、Java7は残したままインストールすることにした。Java6はOracleからは提供されていないので、ここから本家Apple提供のものをインストールする。

次に、ひとつのマシンにひとつのJava VMなら問題ないのだが、混在する場合はEclipseがどのVMを使って起動するかを指定してあげる必要がある。ちゃんとJava6で起動していればいいのだが、先にJava7をインストールしているので、そちらが優先になってしまう。

f:id:architshin:20150201134333p:image:w250,left

これは、Eclipseメニューから「Eclipseについて」を選択し、Eclipseについてウインドウから「インストール詳細」ボタンをクリックし、インストール詳細ウインドウの「構成」タブをクリックする。ずらずらと出てきたシステムプロパティーの中から「-vm」をさがせば、このEclipseがどのVMで起動しているかを確認できる。

これを、新たにインストールしたVMに変更する場合は、Eclipse.appのコンテキストメニューを表示させ(右クリック)、パッケージの内容を表示を選択。

Contents > MacOS

と開いて、eclipse.iniをテキストエディタで開いて以下の項目を先頭に追記する。

-vm
/Library/Java/Home/bin/java

2行目は新たに追加したJava VMのパス。インストールマシンによってパスが変わる可能性があるので、ここはターミナルなどで確認したほうがいい。

これで、無事解決した!