git-similarity-index
Version:
🔨 This simple tool calculates the similarity index between two files.
105 lines (81 loc) • 3.34 kB
Markdown
[](#cli)
[](https://www.npmjs.com/package/git-similarity-index)
[](https://badge.fury.io/js/git-similarity-index)
[](https://www.npmjs.com/package/git-similarity-index)
[](https://packagephobia.com/result?p=git-similarity-index)
[](https://piecioshka.mit-license.org)
[](https://github.com/piecioshka/git-similarity-index/actions/workflows/testing.yml)
🔨 This simple tool calculates the similarity index between two files.
I would like to calculate the similarity between two files. Unfortunately, but Git does not provide a command that would count the ‘similarity index’. Therefore, I decided to write such a tool myself that counts this index.

```bash
npm install -g git-similarity-index
git-similarity-index mocks/file1.txt mocks/file2.txt
git-similarity-index mocks/file1.txt mocks/file2.txt --use-git
```
```js
import {
getSimilarityIndex,
getLinesBytes,
getSimilarityIndexForText,
getSimilarityIndexForFiles
} from "git-similarity-index";
// getSimilarityIndex + getLinesBytes
(function () {
const toBytes = (text) => Buffer.from(text).toJSON().data;
const firstPattern = "a\n";
const secondPattern = "a\nb";
const similarityIndex = getSimilarityIndex(
getLinesBytes(toBytes(firstPattern)),
getLinesBytes(toBytes(secondPattern)),
toBytes(secondPattern).length,
);
console.log(similarityIndex); // 66.67
})();
// getSimilarityIndexForText
(function () {
const firstPattern = "a\nb\nc\n";
const secondPattern = "a\nb\nc\nd";
const similarityIndex = getSimilarityIndexForText(
firstPattern,
secondPattern,
);
console.log(similarityIndex); // 85.71
})();
// getSimilarityIndexForFiles
(async function () {
const similarityIndex = await getSimilarityIndexForFiles(
"mocks/file1.txt",
"mocks/file2.txt",
);
console.log(similarityIndex); // 46.34
})();
// getSimilarityIndexForFiles + useGit
(async function () {
const similarityIndex = await getSimilarityIndexForFiles(
"mocks/file1.txt",
"mocks/file2.txt",
{ useGit: true },
);
console.log(similarityIndex); // 46.34
})();
```
The tool itself uses the `debug` library. You can enable debugging by setting the `DEBUG` environment variable.
```bash
DEBUG=git-similarity-index:* git-similarity-index mocks/file1.txt mocks/file2.txt
DEBUG=git-similarity-index:bytes git-similarity-index mocks/file1.txt mocks/file2.txt
DEBUG=git-similarity-index:text git-similarity-index mocks/file1.txt mocks/file2.txt
DEBUG=git-similarity-index:files git-similarity-index mocks/file1.txt mocks/file2.txt
```
[](https://piecioshka.mit-license.org) @ 2024