https://github.com/setlog/duperig
Find copied and modified files between two related folder hierarchies in a git repository.
https://github.com/setlog/duperig
Last synced: 4 months ago
JSON representation
Find copied and modified files between two related folder hierarchies in a git repository.
- Host: GitHub
- URL: https://github.com/setlog/duperig
- Owner: setlog
- License: mit
- Created: 2019-12-03T15:07:00.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-15T02:41:29.000Z (over 2 years ago)
- Last Synced: 2024-06-21T10:59:07.717Z (almost 2 years ago)
- Language: Go
- Size: 15.6 KB
- Stars: 0
- Watchers: 5
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## duperig
Find copied and modified (*duped* and *rigged*) files between two related folder hierarchies which are contained in git repositories. Prints current file SHA-256 along with its latest matching commit hash **as seen in the git repository of the first folder specified in the argument list** (if available).
### Requirements
* Some version of git which isn't ancient. Tested with git `2.17.1`.
* Go 1.13.
### Installation
```
go get -u github.com/setlog/duperig
```
### Usage
`git checkout` the correct revisions of the projects in which you want to compare folder hierarchies, then use the command like so:
```
duperig path/to/folder/from/which/files/were/copied path/to/folder/to/which/files/were/copied
```
### Example
```
duperig projects/thingamajig_base/src/main/java/com/pany projects/thingamajig_special/src/main/java/com/pany
DIFF: services/Foo.java: 7418a5b686 (Commit: a7e5433603) vs dd232c048b (Commit: 119bb3cb41)
DIFF: data/Result.java: 711528c9c2 (Commit: a70d2cc30f) vs 2503ca3aeb (Commit: 47a05b7ada)
DIFF: data/Data.java: 123456789ab (Commit: 98765434567) vs 2637485985 (NO MATCHING COMMIT)
DUPE: mail/MailClient.java @ 3ec54907a4
DUPE: save/Database.java @ 5c346980d6
There are 5 coinciding paths. Out of these, 2 have matching files and 3 have differing files.
Out of the 3 different files, 1 files have modifications unknown to the repository at /home/u/projects/thingamajig_base.
```
Folder structure at `projects/thingamajig_special/src/main/java/com/pany` has 5 files with paths coninciding with 5 other files under `projects/thingamajig_base/src/main/java/com/pany`. Out of those 5 files, 2 are exact duplicates. The remaining 3 files differ. From the differing files, 2 have commit hashes in `projects/thingamajig_base`. However, the file `projects/thingamajig_base/src/main/java/com/data/Data.java` has changes unique to `projects/thingamajig_special`.
### Status
Working, but slow and unoptimized. Not suitable for projects above 1 GB.
### TODO
See issues.