scroll-through-time icon indicating copy to clipboard operation
scroll-through-time copied to clipboard

Scroll through git history

Open pixelcort opened this issue 7 years ago • 7 comments

Currently this scrolls through undo/redo history. In addition, it would be nice to scroll back through git history as well.

pixelcort avatar Mar 15 '17 07:03 pixelcort

Hum that's a difficult feature to conceptualise:

  • does it navigate only in the history of the current file?
    • if so, it probably won't work with the rest of the files
    • if not, it will probably be super slow
  • does it actually checkout the different commits?
    • if so, when starting to make changes after an old commit, you will need to force push
  • what do you do with the current changes to the file? I guess you need to block the feature when there is changes

mathieudutour avatar Mar 16 '17 08:03 mathieudutour

You would need to load the history of all commits, then play them back. This will change all other files in the project as well. Plus you need to stash the current changes or prevent scrolling when there are changes.

Another way would do git log -p myFile and see all changes of the file up to it's creation and get that into the file somehow. Then you do not need to stash anything, because all changes are added.

If you like, apparently, you can keep track of one file as explained here: https://stackoverflow.com/questions/11128434/how-can-i-use-git-to-track-versions-of-a-single-file/13336304#13336304

xtrasmal avatar Nov 15 '17 18:11 xtrasmal

Actually, Git does provide an API for viewing the contents of files at another revision, without checking them out; the command is git show. [stack overflow]

So to implement the "scroll through git history" feature, you can:

  • Run git rev-list HEAD when scrolling starts, to get a list of all parent commits.
  • Run git show REVISION:PATH_OF_CURRENT_FILE as you scroll through different revisions to get the contents.

szhu avatar Nov 28 '17 01:11 szhu

@szhu this will be "read-only"

xtrasmal avatar Nov 28 '17 13:11 xtrasmal

@xtrasmal can you clarify what you are referring to? I believe both your solution and mine are solutions that only read from the Git API.

szhu avatar Dec 14 '17 00:12 szhu

This sounds cool and possibly lightly useful

ndelangen avatar Aug 15 '18 02:08 ndelangen

In Atom there is the "git-time-machine" Package from littlebee which enables a timeline where you can look at your older commits.

BlueCl0wn avatar Mar 25 '19 22:03 BlueCl0wn