Giter Club home page Giter Club logo

kani's Introduction

🦀 kani

A tool for supporting git/GitHub operation for the novice developers.

License Version DOI

tamada/brew/kani

Discussion

🗣️ Overview

Learning the git and GitHub operation is difficult for novice programmers. Since even programming is a pretty complicated task, it becomes challenging to consider various kinds of operation except programming, such as good commit, pull requests, etc. However, the recent development process ordinary manages product versions with SCM such as git. Therefore, it requires the novices should learn them as soon as possible.

Then, we focus on the commits' timing, and the proposed system recommends commit at the suitable timing. Also, the recommendation text contains a simple help message for git. From above two manners, we expect the novices accustomed git.

The proposed system, named kani, records the terminal's executed commands and runs the recommendation engine by each recoding. The recommendation engine analyzes the histories of the executed commands with their status codes and statuses of git.

💬 Description

🎐 Features

  • Records the executed command in your terminal in your repository,
  • Runs analysis scripts by each command execution,
    • Recommends the timing of git commit, and git push.
  • Shows simple usage of git commit and git push.

🏁 Goal of kani

kani recommends the operations of git and GitHub from behaviors of novices in the terminal. Therefore, the goal of kani is to become unnecessary for novices, like walking assist instrument for babies. For this, kani wants to measure git/GitHub operation maturity rates (GOMR) for the novices. GOMR would measure by the following methods.

  • Matching rates with the behaviors of experts (recording beforehand)
  • Following rates of Git flow, GitHub flow, or GitLab flow.

⚓ Install

:megaphone: Notice

kani runs on zsh, and bash only. Not work on other shells (csh, ksh, fish, ...).

📌 Requirements

🍺 Homebrew (macOS)

Type the following two commands, then kani will be installed into your /usr/local/opt/kani

brew tap tamadalab/brew
brew install kani

💪 Install yourself

  • Clone the kani repository from GitHub (tamadalab/kani).
    • git clone https://github.com/tamadalab/kani.git
  • Move to the cloned kani directory.
    • cd kani
  • Compile the sources.
    • make
  • Make distribution file.
    • make dist
  • Extract the suitable archive file in dist directory in your system.
    • tar xvfz dist/kani-1.0.0-windows-amd64.tar.gz -C INSTALL_DIR
  • Set KANI_HOME environment value to your INSTALL_DIR
    • setenv KANI_HOME=${INSTALL_DIR}
    • the above line should be written in your .bashrc or .zshrc.

🏃 Usage

👞 Initialization

At first, write the following snippet in your login shell initializer (.bashrc, or .zshrc)

eval "$(kani init -)"

🎽 Setup repository

  • Choose your git repositories to run kani,
  • Change directory to your local git repository,
  • Run kani init command for preparing the kani running on the repository.

☕ Stop kani temporarily in a particular repository

If you want to stop recoding command temporary, run kani disable (kani creates file disable on .kani directory). Then, want to start recoding again, run kani enable.

💔 Stop kani permanently in a particular repository

If typing kani deinit in a particular repository, kani never records anymore. After that, typing kani init, kani starts recoding again.

😄 About

📜 License

CC0-1.0

The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.

You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. See Other Information below.

📃 Cite kani

🎃 Logo

logo

This image comes from https://freesvg.org/crab-image (Public Domain)

📛 Project name comes from?

We do not know. Note that kani means crab in Japanese.

👨‍💼 Developers 👩‍💼

📚 References

  • Lassi Haaranen, and Teemu Lehtinen, "Teaching Git on the Side: Version Control System as a Course Platform," Proc. the 2015 ACM Conference on In novation and Technology in Computer Science Education, pp. 87–92, DOI: 10.1145/2729094.2742608, June 2015, https://dl.acm.org/doi/10.1145/2729094.2742608.
  • Ville Isomöttönen, and Michael Cochez, "Challenges and Confusions in Learning Version Control with Git," Proc. Information and Communication Technologies in Education, Research, and Industrial Applications (ICTERI 2014), pp. 178-193, DOI: 10.1007/978-3-319-13206-8_9, November 2014, https://link.springer.com/chapter/10.1007/978-3-319-13206-8_9.
  • 井上 拓海, 小島 遥一郎, 藤原 賢二, 井垣 宏, "版管理システム利用時のソフトウェア開発フロー遵守状況可視化手法の検討", 信学技法, No.SS2017-55, January 2018.

kani's People

Contributors

ma-sa321 avatar tamada avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

tamada

kani's Issues

【相談】取得データについて

commitタイミング判別について

現在,変更行(git diffで増減を取得)が一定数超えるとcommitを促す仕様になっています.
もう一つの基準として何回もエラーが出た後,修正されたタイミングでも促すことを検討していました.
その実装方法について相談なのですが,標準出力とエラー出力の区別はエラーの文字列が入っているかどうかでしか区別出来ないでしょうか.

検証用データについて

kaniの有用性を調べるため,git commitを促すことでどれだけスムーズにコマンド操作出来ているかというデータを取得しようと考えています.

  • git addし始めてからcommitメッセージ登録が終了するまでの時間.
    • コマンド操作のログから時間を取得するものを実装中です.
  • アンケート
    • kaniありとなしの場合で作業しやすかったか,commitを促されることで日常的にgitを使うハードルが下がるか,などを設問にする予定です.

他こういうデータを取得していると良いのではないか,という点があればアドバイス戴けませんでしょうか.

実装機能

優先度1: 被験者実験までに実装必須
優先度2: 被験者実験に影響は出るが未実装でもデータは取れる
優先度3: 論文提出までに完成してたらいい

commitタイミング通知

  • プログラム動かすコマンドに引っ掛けて,ソースコードを抽出する(優先度1)
  • 実行ソースコードがJavaかCかを判別(優先度3)//複数言語で検証する場合は優先度1
  • 関数内の行数が一定数(10~)超えたら通知作動する(優先度1)
  • コンパイル結果(エラーetc)のログをとる(優先度1)
  • エラーが複数回連続で発生していた後のエラーなしの場合通知作動する(優先度1)

ツール導入

  • zshrcの追記簡易にする(優先度2(最悪手動))
  • 補助ツールオンオフ(優先度2(時間かかりそうなら手動))
  • ツールのディレクトリ内ならどこにファイルおいても動作する(優先度3)

被験者向けソースコード

  • Java(優先度2)//複数の言語だと検証しにくいからCだけにしとく...?
  • C

検証用データ

  • コマンド操作間の時間 (優先度2(最悪画面収録で手動計測も視野に))
  • gitコマンドの入力速度 (優先度2(最悪画面収録で手動計測も視野に))
    →画面収録で時間測定

【報告】現在の挙動

  • 行数,エラー回数によってcommitを促す.
  • commitを促すときに出るメッセージ(analyses/guide_commit.txt).
  • 被験者用ソースコード(src/01_template.c, 02_template.c)
    全ての実装が完了したので,一通り動作のテストをしようとkaniを一旦unistallしました.

再び入れようとすると,以下のように表示されインストールできなくなりました.

  Errno::EINVAL: Invalid argument @ rb_file_s_rename - (/private/tmp/kani-20201027-38589-1tath8/src, /private/tmp/kani-20201027-38589-1tath8/src/github.com/ma-sa321/kani/src)

この場合,どう対処すれば良いのでしょうか.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.