codecat
「 Merge Code Repository into a Single File | Respects .gitignore | Ideal for LLM Code Analysis 」
codecat is a command-line utility that can merge a code repository into a single text file and split it back. It respects the rules defined in your .gitignore, making it suitable for creating a clean context bundle of your project's source code for LLM analysis.
Features
- Merge & Split: Easily bundle your project or restore it from a bundle.
- Ignore Rules: Respects
.gitignore,.ignore, global ignore rules, etc., powered by theignorecrate. - Clear Delimiters: Adds clear markers (
--- START FILE: path/to/file ---and--- END FILE: path/to/file ---) for LLM readability. - UTF-8 Support: Attempts to read files as UTF-8, skipping non-UTF8 files with a warning.
- Cross-platform: Works on Windows, macOS, and Linux.
Installation
Ensure you have Rust and Cargo installed.
Usage
codecat automatically detects whether to merge or split based on the input path.
1. Merging a Directory
Navigate to your project directory or provide the path to it:
By default, codecat will create a file named <project_directory_name>.codecat.txt in the parent directory of your project.
You can specify a custom output file path using the -o or --output flag:
2. Splitting a Merged File
To restore a directory from a .codecat.txt file:
By default, codecat will create a directory with the same name as the file (excluding the .codecat.txt suffix) in the same location.
You can specify a custom output directory using the -o or --output flag:
Example Output Structure
The generated file will look something like this:
fn main() {
println!("Hello, world!");
}
[package]
name = "my_project"
version = "0.1.0"
# ... other cargo stuff ...
# My Project
This is my awesome project.
...
(Files listed in .gitignore, like target/ or .env, will not be included).
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)