GithubHelp home page GithubHelp logo

Comments (1)

gregjacobs avatar gregjacobs commented on July 17, 2024 1

Hey Kartik,

Git does rename detection based on file content similarity, so if the file has changed drastically, git may consider the file a deletion+addition. However, the threshold that git uses to determine if a file is "similar enough" can be changed at any time, even after you commit.

The commit object itself for the renaming of files doesn't actually store any information about renames; it only stores the deletes/adds. It's only when you're viewing the history of a file does git actually compare the file deletions and additions in any given commit by file contents to determine if two files are the same file that has actually been renamed. So this is both good and bad news: good in that you can actually tweak the threshold of what git should consider two files "similar enough" that they'll be considered a rename when running commands like 'git diff' (git diff --find-renames=40% would mean files need to be at least 40% similar to be considered a rename), but bad in that other team members will need to have the exact same rename threshold setting to find those renames later in time.

Bottom line though here is: it doesn't actually matter what git sees as a rename or not when you commit those 1000 files. You'll need to configure your tools (the git CLI, any gui git tool you use) to be have a more relaxed rename threshold when you search through your file history later. I believe git defaults to 50% similarity of file contents in order to consider a file a rename, so you'll need to reduce that threshold later.

Best,
Greg

from js-to-ts-converter.

Related Issues (17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.