manuskript icon indicating copy to clipboard operation
manuskript copied to clipboard

[FEATURE IDEA] Incorporate GIT in Manuskript

Open TeebObeeT opened this issue 6 years ago • 8 comments

As a user of Manuskript, I want to version my project data and be able to get "back in time" if needed.

The best option is to use Git (Lab|Hub) . Similarly as the function from modern IDE (Atom, VS Code), a possibility to commit (with message) and push directly from Manuskript would be a plus.

Optionnally, possibility to clone and display diff with previous version but this might be an overkill

TeebObeeT avatar Aug 23 '18 12:08 TeebObeeT

I really like this idea and will see what I can do.

RiderExMachina avatar Sep 18 '18 07:09 RiderExMachina

A Versioning Interface with a kind of PlugIn API would be better on the long run, I personally use SVN for all my personal Project (On my own server, Programming and Writing)... When only one Person use a repository, SVN is more easy to admin then GIT...

obw avatar Nov 02 '18 22:11 obw

I agree with @obw , a plugin API would be better : I'd like to add support for Mercurial (instead of git) but it's not the only idea I'd like to implement as plugins.

edit: since 2018, my opinion moved to "use git" instead of the plugin approach ...

edomaur avatar Nov 04 '18 07:11 edomaur

a good way to achieve this would be to change the format of the project file (.msk file) to a format like xml. That way you could use the versionning system you want on the file(s) itself

EDIT: Sorry, I wrote a little quickly, I did'nt realize the .msk file was actually a simple zip... But since it is composed of readable files, it's easy to use git or whatever on those files no?

olinox14 avatar Dec 27 '18 09:12 olinox14

It is possible to manually use a version control system on the Manuskript project files when the Edit -> Settings value for Save to one single file is disabled as described in Open and Plain Text Format.

gedakc avatar Jan 01 '19 17:01 gedakc

I +1 the feature request of providing a built-in tracking of revisions within Manuskript. Since we already have the folder-saving feature, we can already use git or another Source Code Management (SCM) solution outside the software. But it would be nice to manage the entire lifecycle of the project in one software.

I also like @obw's suggestion of using a plugin architecture, so while most people would probably want to use Git, it still makes it easy to implement SCM systems like SVN or Mercurial.

QuantumGrizzly avatar Nov 13 '21 21:11 QuantumGrizzly

I have also started a discussion ( #871 ) to this topic for the refactoring process. I'm not fully sure yet if we should use GIT or SVN but I think we will definitely replace the old revision system with one of these.

TheJackiMonster avatar Nov 14 '21 00:11 TheJackiMonster

As a middle-ground, maybe the way forward really is just letting another version control system handle revisions. What could be done is to change the revisions setting to something that allows one to select a version control system. What that does is simply call another executable with the save location as the current working directory upon certain triggers e.g

  • git is selected
  • An init button is enabled --> git init
  • Save: open terminal window with git commit
  • Auto save: git commit -m "Autosave $date"
  • Show revisions: open terminal and run git log

There could a "custom" option where advanced users choose their commands to be executed. It would also allow using other GUIs e.g TortoiseGit, TortoiseSVN, gitg, GitAhead, GithubDesktop, ...

This would provide at least basic support for revisions and offload it to systems that have already solved the problem. Additionally, it would support any version control system the user chooses: git, cvs, svn, mercurial, fossil, hell even things like rsync, scp, ipfs add, and so on. The sky's the limit.

I imagine it would also rip out a bunch of code and simplify the revisioning system.

LoveIsGrief avatar Feb 13 '24 22:02 LoveIsGrief