👏

Juliaのパッケージ開発とGitHubとの連携

2023/06/02に公開

事前準備

  1. GitHubのアカウントを作成
  2. Localな環境で、Gitのユーザ名、メールアドレスを設定、GitHubアカウント名への紐付け

git config --global user.name "Hiroshi Shinaoka"
git config --global user.email h.shinaoka@gmail.com
git config --global github.user shinaoka
  1. GitHubへのSSHキー追加 公式ドキュメント

GitHub上でのレポジトリ作成

  1. まずはGitHubにログインします。
  2. ログインしたら右上にある「+」(プラス)マークをクリックして、ドロップダウンメニューから「New repository」を選択します。
  3. 次に以下の情報を入力します:
  • Repository name: 作成するリポジトリの名前を入力します。名前はユニークである必要はありませんが、リポジトリの内容を簡単に理解できる名前が好ましいです。今回はMyPackageにしましょう
  • Description (optional): リポジトリの詳細な説明を追加します。これはオプションで、リポジトリの内容を他のユーザーに説明するためのものです。
  • Public/Private: リポジトリが公開(Public)されるか、非公開(Private)にされるかを選択します。公開リポジトリは誰でも見ることができますが、非公開リポジトリは選択したユーザーだけがアクセスできます。今回はPublicを選びます
  1. 追加設定が必要であれば、以下のオプションも選択できます (今回は選択しません):
  • Initialize this repository with a README: これを選択すると、リポジトリにはREADMEファイルが自動的に作成され、そのファイルにはリポジトリの説明が書かれます。
  • Add .gitignore: 特定のファイルやディレクトリをGitのトラックから除外するための.gitignoreファイルを追加します。ここでは使用しているプログラミング言語やツールに応じたテンプレートを選択できます。
  • Add a license: リポジトリにライセンスを追加します。オープンソースプロジェクトでは一般的にライセンスが追加されます。
  1. 最後に「Create repository」ボタンをクリックします。

以上で、GitHub上で新しいリポジトリが作成されます。

Localでのレポジトリ作成と同期

上の操作を完了すると、以下の様にLocalなレポジトリとの連携が促されます。

今回は、"create a new repository on the command line"を試してみましょう。
前回までの記事で作った~/workspace/MyPackageに移動して、お勧めされている以下の一連のコマンドを実行しましょう。以下には適宜コメントを付けてあります。

echo "# MyPackage" >> README.md # READMEファイルを作成
git init # ~/workspace/MyPackage/.git以下に管理用のファイルが作成sareru
git add README.md # README.mdを"ステージ"する
git commit -m "first commit" # ステージされたファイル ("README.md")をcommitする
git branch -M main # 現在のブランチの名前をmainに変更
git remote add origin git@github.com:shinaoka/MyPackage.git # このレポジトリをGitHub上のレポジトリに連携させる
git push -u origin main # データを転送

では、GitHub上のMyPackageレポジトリの中身を確認してみましょう。無事README.mdファイルが登録されていますか?

他のファイルの登録

他の、src, test以下のファイルはどうなったのでしょうか?実は、明示的にそれらのファイルを"git add"して、localなレポジトリに登録した後、GitHubのレポジトリにpushする必要があります。以下で試してみましょう。Manifest.tomlをステージしないようにしましょう

  1. Project.toml, src, test以下の*.jlファイルをステージする
> git add Project.toml src/*.jl test/*.jl
  1. statusを確認。Gitが新しいファイルがcommitの対象として認識していることを確認
> git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   Project.toml
	new file:   src/MyPackage.jl
	new file:   test/runtests.jl

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	Manifest.toml
	notebook/
	test/Project.toml
	~/
  1. commitする
> git commit -m "Add project files"
[main e73c3cc] Add project files
 3 files changed, 31 insertions(+)
 create mode 100644 Project.toml
 create mode 100644 src/MyPackage.jl
 create mode 100644 test/runtests.jl
  1. commit logを確認
> git log
commit e73c3cc9efe452ff7769d6a0ff63287913ebefeb (HEAD -> main)
Author: Hiroshi Shinaoka <h.shinaoka@gmail.com>
Date:   Mon May 29 11:48:12 2023 +0900

    Add project files

commit 1071a85f2e166fc46e7c2082dbba24e20d33a5cc (origin/main)
Author: Hiroshi Shinaoka <h.shinaoka@gmail.com>
Date:   Mon May 29 11:41:28 2023 +0900

    first commit
  1. GitHub上のレポジトリへpush
> git push
X11 forwarding request failed on channel 0
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 908 bytes | 908.00 KiB/s, done.
Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:shinaoka/MyPackage.git
   1071a85..e73c3cc  main -> main

演習問題

GitHub上にアップロードしたレポジトリを、localの他の場所にgit cloneしましょう。
そのレポジトリを使ってプロジェクト環境を構築し、テストが実行できることを確認しましょう。
ヒント: Pkg.instantiate()

Discussion