0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Gitを使う開発者のための時間節約術:自動`.gitkeep`ファイル生成ツール

Last updated at Posted at 2023-11-14

はじめに

開発者の皆さん、空のディレクトリをGitリポジトリに含めるために.gitkeepファイルを一つずつ手動で作成する作業に時間を取られていませんか?今日は、この面倒な作業を自動化するツール「GitkeepGenerator」の使い方とメリットをご紹介します。

GitkeepGeneratorとは?

GitkeepGeneratorは、指定されたディレクトリパス内のすべての空のディレクトリに.gitkeepファイルを自動的に作成するJavaプログラムです。このツールを使うと、空のディレクトリをGitリポジトリに簡単に追加できます。

なぜ.gitkeepファイルが必要?

Gitは空のディレクトリをトラックしません。プロジェクトのディレクトリ構造を保持するためには、空のディレクトリに何らかのファイルを置く必要があります。.gitkeepはその目的で広く使われています。

GitkeepGeneratorの使い方

  1. ダウンロードとセットアップ: GitkeepGeneratorのJavaプログラムをダウンロードし、Java環境をセットアップします。
  2. コマンドラインで実行: プログラムをコマンドラインから実行し、対象のディレクトリパスを引数として渡します。
  3. 自動生成: プログラムが自動的に空のディレクトリを検出し、.gitkeepファイルを生成します。

GitkeepGeneratorのメリット

  • 時間節約: 手動で.gitkeepファイルを作成する必要がなくなります。
  • エラー削減: 手動操作によるミスが減少します。
  • 効率的なプロジェクト管理: プロジェクトのディレクトリ構造を簡単に保持できます。

GitkeepGeneratorのソースコード

以下はGitkeepGeneratorの基本的なソースコードです:

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

public class GitkeepGenerator {

    public static void main(final String[] args) {
        if (args.length > 0) {
            final var dirPath = args[0];
            final var dir = new File(dirPath);
            if (dir.exists() && dir.isDirectory()) {
                final List<String> emptyDirs = new ArrayList<>();
                GitkeepGenerator.getChildPaths(dir, emptyDirs);
                for (final String emptyDir : emptyDirs) {
                    GitkeepGenerator.makeGitkeep(emptyDir);
                }
                System.out.println("完了");
            } else {
                System.out.println("指定されたパスは無効です。正しいディレクトリパスを指定してください。");
            }
        } else {
            System.out.println("ディレクトリパスが指定されていません。");
        }
    }

    private static void getChildPaths(final File parentDir, final List<String> emptyDirs) {
        final var subDirs = parentDir.listFiles(File::isDirectory);
        final var files = parentDir.listFiles((final var f) -> !f.isDirectory());
        if (subDirs != null) {
            if (subDirs.length > 0) {
                for (final File subDir : subDirs) {
                    GitkeepGenerator.getChildPaths(subDir, emptyDirs);
                }
            } else if (files != null && files.length == 0) {
                emptyDirs.add(parentDir.getAbsolutePath());
            }
        }
    }

    private static void makeGitkeep(final String dir) {
        try {
            Files.createFile(Paths.get(dir, ".gitkeep"));
        } catch (final IOException e) {
            e.printStackTrace();
        }
    }
}

結論

GitkeepGeneratorは、Gitを使う開発者にとって非常に便利なツールです。このツールを利用することで、.gitkeepファイルの作成作業から解放され、より重要な開発作業に集中できるようになります。開発の効率化を図りたい方は、ぜひこのツールをお試しください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?