[JAVA] Now, git GUI client self-made is very popular!

Solicitation

Everyone is making a Git client app.

I dream that it will be fun if the number of people who make their own works increases and such a neighborhood arises.

progress

進捗_3.gif

Motivation

My situation,

Is the motive that I am aware of. Well there may have been others. (Currently, I am developing iOS and Android apps as a freelance engineer.)

Also, thanks to reading "I made a GUI Git client app" last year. I think it was a couple of years earlier to try to make it myself.

Make a commit or manipulate a commit

After wondering if I could make it to the point where I could make it Thinking about what you want from a git GUI client, When I was exporting and prioritizing, I came to think as follows.

I think it's better to divide what you do with git into the following two phases.

You don't necessarily have to do these two phases in the same application. Use your favorite application and sometimes hit the command line directly.

Of course, it goes back and forth, so the same application is easier, Some functions may not be classified into either. (For example, git bisect may be better prepared for something special.) But if you want to make a git application, it seems better to think separately here.

And you can make a commit no matter how you use it Above all, I want line-by-line stage / unstage as a lifeline, so First of all, I decided to make this.

Implement line-by-line stage / unstage

These are the articles I have written on qiita and the articles I plan to write in the future.

[\ 1 ] stage / unstage basic knowledge

5 things to do for line-by-line stage / unstage

1. Output diff as the original patch 2. Select the line you want to stage / unstage 3. Edit the body of hunk`` 4. Recalculate the hunk header`` 5. Apply the final patch

[\ 2 ] stage / unstage incomplete capture

It was impossible to use JGit, so I talked about using git.exe as it is. I haven't written in detail, but Electron has struck me back. I will revenge someday.

[\ 3 ] stage / unstage patch editing

3. Edit the body of hunk`` 4. Recalculate the hunk header``

[4] diff et al.

1. Output diff as the original patch

[\ 5 ] First Desktop App

Display for 2. Select the line you want to stage / unstage

[6] Stage / unstage finishing (provisional)

Continued from 2. Select the line you want to stage / unstage 5. Apply the final patch Discard local changes (unfinished)

[7] Write a test (provisional)

I'm trying hard to deal with things that are impossible on the command line, so I'll die if I don't write a test. It would be great if only the test part could be cut out and made into a library, Maybe it's tough in the near future, so I'll write how I'm testing it. It was my first time to write test code.

Next development schedule

For some reason, I was able to commit. There are minor issues and problems, but it is a paragraph.

Since I quit my job, I have less time to use it, "If you try to use it at work, it lacks the necessary functions and implements it at full speed." Because of that, it also has a good effect.

Next, as a big picture,

First of all, I think about the UI that displays the commit history for that purpose. First of all, I would like to make the display of complicated graphs look good without trying hard.

By the way, the second thing I want from a GUI client is git rebase -i. I feel that the hurdles are high, but I'm sure it will be managed. By the way, recently, in my Windows 10 environment I'm crying because I started stack overflowing with git rebase.

distribution

Since it is Java, it works everywhere, but how should I distribute it? I haven't researched anything yet, but I'm just saying "I wish I had a strong store".

Recommended Posts

Now, git GUI client self-made is very popular!
Create a weekly git GUI client [5] First desktop app
Make a weekly git GUI client [4] diff et al.