- 投稿日:2020-03-15T22:52:21+09:00
【手抜き】STM32の使い方まとめ 4.STM32CubeIDEでGit
前書き
引用主体の記事です(ひどい)。
基本は今日の引用に沿って進めてください。
やっておきたい設定とignoreする・しないがこの記事の目玉です。テーマ概要
Gitを扱うにはいろいろな方法(ソフト)がありますし、CUI,GUI論争もあるかと思います…
ともあれSTMを使うGUIユーザーにお勧めです。
一つのソフトですべてできることが、統合開発環境(IDE)の醍醐味ですね。今日の引用
初めてQiitaの外からの引用になります。Qiitaでは記事が多すぎていいものが見つけられなかったです
引用の補足
PC
私の環境は
Windows10 1909 CubeIDE 1.2.1 Nucleo F303k8 or F446RE ですが、特に問題は出ておりません。
以降ではCubeIDEを日本語化したもので説明しています。
3.STM32CubeIDEの日本語化パースペクティブ
これはCubeIDEの母体であるEclipseの用語なのですが、きれいに説明されてませんね…
CubeIDEの画面にはフォルダマップやコード、コンソール画面などの「ビュー」がたくさん表示されます。
コードを書く&ビルドするときは上記を使う一方、デバッグするときはデバッグ内容の表示など別のビューが表示されてほしいですよね?
そのために、そのビューの開き方、並べ方をプリセットする機能がパースペクティブで、画面の右上あたりにあります。CubeIDEはデフォルトで、C/C++,Debug,DeviceConfigTool(CubeMX)の三つのパースペクティブが存在すると思います。
デバッグを走らせるとDebugパースペクティブに自動で切り替えたり、iocファイルを開くとCubeMXパースペクティブが開いたりするはずです。
(最初はそれをするか・しないかのプロンプトが出てくる)参照
Eclipse用語「ワークベンチ」「パースペクティブ」「エディター」「ビュー」「ワークスペース」についてやっておきたい設定
1.クローン先ディレクトリ
デフォルトではgitのclone先ディレクトリが
C:/users/[ユーザー名]/Git
になっています。
開いているワークスペースのディレクトリとは違う(参照状態)のは、後々のバグの原因となり得ます。
そこで、クローン先を開いているワークスペースに変えます。
上バー「ウィンドウ」→設定→チーム→Git から
「デフォルト・リポジトリ・フォルダ」を${workspace_loc}
にする
2.必要なビューの表示
「Gitステージング」
コミットするときに使用しますが、最初に表示されてなかった気がします。
Gitパースペクティブを開いた状態で「ウィンドウ→ビューの表示→Gitステージング」です。
「ヒストリー」
「Gitリポジトリ―」にあるリポジトリを選択した時に、コミットとブランチのグラフが見えます。規模によっては重宝するかも?3.Gitのツールバー表示
マージやチェックアウトなどをボタン一つでしたい
Gitパースペクティブにて
・「ウィンドウ→パースペクティブ→パースペクティブのカスタマイズ」から
「アクションセット可用性」及び「メニュー可用性」のGitに✅
・「Toolbar Visibility」にてツールバーにほしいアイテムを選択します
自分の選択ははこんな感じですね
ignoreする・しない
ちょっと問題になりますよね…ignoreして無かったら何もいじってないのに変更がかかってgit操作が面倒になるケース、
逆に必要なものがaddされてなくて面倒になるケース…CubeIDEのGUI(Egit)でリポジトリを構築した場合、gitignoreが自動生成されます。
ignoreすべきもの
・/Debug/ /Release/
まあビルドした時に生成されるファイルですから本質の変更とは無関係な変更となります。
・/.settings/
単語辞書ファイルが入ってます。そのため環境依存
・.mxproject
iocからgenerateしたときに生成されるもの、中を見るとプロジェクトのパスが書かれていて環境依存です。
・*.launch
デバッグや実行(書き込み)の時の設定ファイルです。
人によってはSTLink(ライター・デバッガー)を複数挿すため、そのID指定をすることがあると思います。よって環境依存となります。ignoreするべきでないもの
「しないべき」「してはいけない」という意味で
・.ioc
CubeMXのファイル(GUIピン設定など)
・.project
CubeIDE用語「プロジェクト」の設定ファイルです。これがあることでこのフォルダがプロジェクトであることを認識します。
これがないとクローンした時にワークスペースにインポート(表示)されないことがあります。
また、もしインポートされなかった場合、CubeIDEを開いた状態にしてエクスプローラで.projectをダブルクリックするときれいにインポートされます。
・.cproject
C/C++の設定ファイル(?)。プロジェクトの「プロパティ」にて設定した項目の一部はここに保存されてるようです。
-u_printf_float(printfのfloat表示)の設定が保存されていることを観測してます。未確認
・*.ld
このファイル何か知らないので勉強します。リポジトリの作り方と注意
お勧めはワークスペース丸ごとではなくて、その中のプロジェクトごとにリポジトリを作ることです。
問題はリモートにあるリポジトリをクローンするときですが、プロジェクトフォルダ名と
.ioc
の名前を一致させる必要があるので、
リモートリポジトリ名によってはクローンのローカルパスの最後を修正する必要があります。相互リンク(随時更新@2020/03/09)
【手抜き】STM32の使い方まとめ
(まだない記事は今後変更の可能性があります)
- 0.STM32のご説明
- 1.STM32CubeIDEの導入とLチカ
- 2.GPIOでデジタル入力
- 3.STM32CubeIDEの日本語化
- 4.STM32CubeIDEでGit
- 5.標準タイマを使う
- 6.タイマ割り込みで等時間制御
- 7.PWM波形の出力
- 8.I2CのMemWrite/Read()
- 8.Encoderモードの使い方
- 9.UART~送信:DMAとprintf少数表示まで~
- 10.MCSDKでブラシレスモータを回す
- 11.RS485
- 12.CAN
- 13.STM32CubeIDEでデバッグ
- 番外. 「私、マクロを使えって言ったよね!?」
- 番外.STM32CubeIDEと日本語の文字化け
- 投稿日:2020-03-15T15:50:01+09:00
npmパッケージ公開の手順
プログラミング歴半年の素人が書いています。
間違いのないようご自身でも良く調べた上でお願いいたします。
以下の記事を参考にさせていただきました。
https://qiita.com/TsutomuNakamura/items/f943e0490d509f128ae2npmにサインアップ
まずはnpmの公式サイトから、会員登録しましょう。
npm ユーザの作成
ターミナルからユーザー情報を登録します。
$ npm set init.author.name "Ai Uehara" $ npm set init.author.email "ai-uehara@example.com" $ npm set init.author.url "http://qiita.com/aiuehara" $ npm adduser # 会員登録情報の入力npmパッケージの作成
npm init
を実行するとpackage.json
ファイルが作成され、npmパッケージとしてディレクトリを管理することができるようになります。$ npm init
npmパッケージに必要なプログラムを記述する
以下のようなファイル構成になります。
index.js
とpackage.json
が必須。
その他に必要なファイルがあればもちろん追加してOK。作業ディレクトリ/ +-- index.js +-- package.json +-- test/ +-- test-index.jsライブラリの追加
自分のnpmパッケージに必要なライブラリをインストールするときは、以下のコマンドを使用することで、自動的に
package,json
に依存関係の記述が追加される。$ npm i --save パッケージ名開発環境のみで使用するライブラリの追加
テストなど開発環境のみで使用するパッケージは、以下のコマンドを使用する
$ npm i --save-dev パッケージ名ライセンスファイルの作成
公開するnpmパッケージのライセンスについて、明記しておきます。
誰でも自由に使用できるライセンス(MIT)として公開することが一般的です。
LICENSE.txt
ファイルを作成し、The MIT Licenseから丸々コピーします。
Copyright <YEAR> <COPYRIGHT HOLDER>
の部分を、書き換えて保存します。npmに公開
$ git add -A $ git commit -m "first commit" $ git tag -a v1.0.0 -m "My first version v1.0.0" $ git push origin tags/v1.0.0 $ npm publish ./バージョンアップするとき
一度npmに公開したパッケージをパージョンアップさせる時には、バージョン情報も合わせて更新する必要があります。
パッチ バージョンアップ
$ npm version patch # <- v1.0.0 からv1.0.1 にアップ v1.0.1 $ git tag # <- git のtag も自動的に作成される v1.0.0 v1.0.1 $ git push origin tags/v1.0.1 # <- ただし、git push まではやってくれないので、必要に応じて自分でgit push ... $ npm publish ./ # <- npm で公開マイナーバージョンアップ、メジャーバージョンアップ
$ npm version minor # v1.0.1 からv1.1.0 にアップ v1.1.0 $ npm version major # v1.0.1 からv2.0.0 にアップ v2.0.0
- 投稿日:2020-03-15T15:05:21+09:00
[Git]Forkしたブランチを最新にする方法
はじめに
リポジトリをフォークするとフォークを同期する
を参考にして書いています!方法
upstreamに本家のリモートを登録
$ git remote add upstream https://github.com/cakephp/docs.git※
https://github.com/cakephp/docs.git
はFork元のURLに変更してください。※含まれているかの確認は
$ git remote -v
のようにしてください。以下画像はサンプルです。
本家の内容を持ってくる。
今回の元のブランチが私は
4.x
なのでupstream/4.xに入ってくるらしい、、、$ git fetch upstream
あとは自分の最新にしたいブランチのところで持ってきたものをマージする。今回は4.xの部分で以下コマンドを打った感じです!
$ git merge upstream/4.x※
4.x
のところは人それぞれです。
なんとなくいらない部分隠してみました!
最後に
終わりです!
- 投稿日:2020-03-15T11:46:05+09:00
git初心者はこれだけ知っていればOKコマンド一覧
初めてgitを触る仕事する場合や、普通に自分で使いたい人など、git初心者の方が、「これだけ知っていればOK」というコマンド一覧です。
clone
リポジトリからファイル・フォルダを持ってくるコマンドです。
$ git clone git@リポジトリのURL/リポジトリ名.git例
$ git clone git@github.com:rails/rails.gitinit
ローカルリポジトリを作成します。
$ git initgit cloneしてプロジェクトを持ってきた場合には必要ありません。
add
ワーキングツリーのファイルをインデックスに登録します。
$ git add README.txtまた、変更したすべてのファイルを登録する際は
$ git add .でいけます。
commit
addでインデックスに登録したファイルをローカルリポジトリに持ってきます。
$ git commit -m "コミットメッセージ"push
ローカルリポジトリをリモートリポジトリに渡します。
$ git push リポジトリ名 ブランチ名マスターブランチにpushする際は
$ git push origin masterとします。originというのはデフォルトのリポジトリのことです。
しかし、マスターに直接pushすることは基本的にないと思います。$ git push origin featurepull
リモートリポジトリをローカルリポジトリに持ってきてファイルのバージョンを上げます。
$ git pull origin ブランチ名status
ローカルリポジトリのファイルの変更状態を確認します。
$ git statusbranch
ブランチを作成・確認します。
$ git branch 作成するブランチ名これでブランチを作成します。また、
$ git branch * feature masterとすると、現在存在するローカルリポジトリのブランチが一覧で表示され、現在捜査しているブランチに「*」がつけられています。
checkout
ブランチを移動したりブランチの変更を取り消したりできます。
$ git checkout ブランチ名また、存在しないブランチを作成して移動するときは
$ git checkout -b ブランチ名と「-b」オプションを付けます。
これは$ git branch ブランチ名 $ git checkout ブランチ名と同じです。
これくらい知っておけばなんとかなると思います。
- 投稿日:2020-03-15T07:54:00+09:00
GitレポジトリをSubversionレポジトリにミラーリングする(Git Server-Side Hook編)
やりたいこと
gitレポジトリをsubversionレポジトリにミラーリングする。
git user -> git server -> svn server -> svn userポイントは
git server
とsvn server
のつなぎ。さてどうしたものか。。。
とりあえず勉強だ!
Git Server-Side Hook(調査)
https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#Server-Side-Hooks
Gitのサーバーサイドフックは以下の3種類がある。
pre-receive
- Pushリクエストをクライアントから受け付けた時に発動する(まだPushは完了していない)。
pre-receive
はPushリクエスト一つにつき一度しか発動しない。non-zero
を返せば、失敗となり、Pushの処理は中止される。0
を返せば成功し、Pushの処理は継続される。update
- 発動タイミングや成功・失敗は
pre-receive
と同様。update
はブランチごとに発動する(Pushリクエストに含まれるコミットがそれぞれ異なるブランチのコミットとなっているような場合)。post-receive
- Pushの処理完了後に発動する。
GitLabでサーバーサイドフックを使う場合には、以下を参照。
https://docs.gitlab.com/ce/administration/server_hooks.html#server-hooks-core-only
For Omnibus installs the path is usually /var/opt/gitlab/git-data/repositories/<group>/<project>.git.
とあるが、わたしの環境では
repositories
の下はHash値になっている。GitLabのAdmin Area>Projects以下にプロジェクト毎のページがあり、
Gitaly relative path:
という項目を参照すればプロジェクトのHash値がわかる。Git Server-Side Hook(作成)
私はDockerを使ってGitLabサーバーを構築している。まずはサーバーにログインする。(
gitlab
という名前のGitLabサーバーインスタンスの想定)% docker exec -it gitlab /bin/bashフックを作成する。
# cd /var/opt/gitlab/git-data/repositories/@hashed/<group>/<project>.git/ # mkdir custom_hooks # cd custom_hooks # touch pre-receive update post-receive # chmod +x pre-receive update post-receive
pre-receive
フックに以下の内容を記載してクライアントからサーバーへPushしてみる。Pushに失敗することを確認する。#/bin/bash exit 1
- 投稿日:2020-03-15T07:24:24+09:00
GitレポジトリをSubversionレポジトリにミラーリングする(実験環境編)
やりたいこと
gitレポジトリをsubversionレポジトリにミラーリングする
git user -> git server -> svn server -> svn user
準備
- GitLab
- Redmine&Subversion
セットアップ
docker composeを使うと、、、あら楽ちん。このまま本番環境には持っていけませんが、実験するには十分です。
インスタンスを立ち上げたら、RedmineとGitLabそれぞれでユーザーやレポジトリを設定します。
version: '3.7' services: redmine: container_name: redmine image: redmine restart: always networks: - mynetwork ports: - 80:3000 volumes: - ./data/plugins:/usr/src/redmine/plugins - ./data/themes:/usr/src/redmine/public/themes - ./data/svn:/srv/svn environment: REDMINE_DB_MYSQL: redmine-db REDMINE_DB_PASSWORD: redmine remine-db: container_name: redmine-db image: mariadb restart: always environment: MYSQL_ROOT_PASSWORD: redmine MYSQL_DATABASE: redmine networks: - mynetwork volumes: - ./data/db:/var/lib/mysql command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci gitlab: container_name: gitlab image: 'gitlab/gitlab-ce:latest' restart: always environment: GITLAB_OMNIBUS_CONFIG: | gitlab_rails['gitlab_shell_ssh_port'] = 2224 networks: - mynetwork ports: - '8929:80' - '2224:22' volumes: - ./gitlab/config:/etc/gitlab - ./gitlab/logs:/var/log/gitlab - ./gitlab/data:/var/opt/gitlab subversion: container_name: svn image: 'kuchida1981/subversion-httpd' restart: always environment: SVN_DEFAULT_USER: admin SVN_DEFAULT_USER_PASSWD: admin networks: - mynetwork ports: - 10080:80 volumes: - ./svn:/var/svn/repos networks: mynetwork: name: mynetwork driver: bridge
- 参考
- http://sig9.hatenablog.com/entry/2019/07/06/000000
- docker-compose.ymlはこのサイトを参考にさせていただきました。
- https://docs.gitlab.com/omnibus/docker/#install-gitlab-using-docker-compose
- https://docs.docker.com/compose/
- https://qiita.com/bezeklik/items/b9d75ee74e0ae4c6d42c
- https://hub.docker.com/r/kuchida1981/subversion-httpd/
- https://docs.docker.com/network/network-tutorial-host/
- https://knowledge.sakura.ad.jp/16082/