Coder Social home page Coder Social logo

Comments (3)

ymattw avatar ymattw commented on August 22, 2024 1

Thank you for giving those very useful information. I am closing this issue because it's intended behavior.

from ydiff.

ymattw avatar ymattw commented on August 22, 2024

from ydiff.

mosbasik avatar mosbasik commented on August 22, 2024

Thank you, that does the job. Sorry it's taken a while to get back to you.

Spent a while reading through the git-diff, git-stash and git-show docs trying to suss out what the default formats are for various cases and what options they support. Learned quite a few things but there's definitely some dark corners still.

In case anyone else finds this with the same questions I had:

git stash show <ref>

This command is built on top of git diff and can take any of its options. By default, it does output a diffstat (NB: this is probably what you meant in your first line instead of git show <ref>.) But it can take --patch, which makes it output a diff in patch format, which cdiff can parse (as you suggested).

git show <object>

This is a multipurpose command to display several kinds of things.

  • When <object> is a non-merge commit, the default output is in two parts: 1) a header with the commit author/date/message and 2) a diff body generated by a normal git diff (you can see this by running, e.g., diff -us <(git show) <(git diff HEAD~1 HEAD) as long as the last commit wasn't a merge). cdiff can parse the output for this case just fine.

  • When <object> is a merge commit, by default git show uses git diff's --cc option to generate a combined diff. cdiff can't parse the output for this case.

  • When <object> is a stash ref, it's always going to be a merge commit, because of the way stashes are stored.

However, if the -m option is used (git show -m <object>), multiple single diffs are generated instead, and cdiff can parse those. (Though in the case of stashes, you'll basically be seeing two copies of the same diff)

So both of these work:

git stash show -p stash@{1} | cdiff -s    # longer, one diff
git show -m stash@{1} | cdiff -s          # shorter, two diffs

from ydiff.

Related Issues (20)

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.