Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

git based hip file management #305

Closed
johnnyquest opened this issue Jan 23, 2015 · 5 comments
Closed

git based hip file management #305

johnnyquest opened this issue Jan 23, 2015 · 5 comments

Comments

@johnnyquest
Copy link
Contributor

hip save: new commit

what is it good for?

  • merging, diffing
  • shared hip files! cloning, work in parallel, pull / merge / push
  • diffs: nodes created, edited, deleted, expressions changed, etc
  • combine/split commits (git ui)
    downsides:
  • merge conflict resolution will probably suck, big time...
  • an easy way of handling conflicts must be worked out.

implementation order:

  • first: save+commit (save hip, hexpand, commit)
    notes:
    • git repo is within the expanded folder structure
      • make sure not to delete it
      • create repo if doesn't exist
    • ask for a one-line commit text
    • next level shit: expand/commit in background
  • second: check out and load current (reset/hard at current, build hip, load)
  • test the above, see what's next

misc:

a tool that turns a .hip file and its backups into a git repository

  • should be able to work incrementally (i.e. append to an existing repository)
  • there should be a way provided to somehow pass commit messages
@johnnyquest johnnyquest self-assigned this Jan 23, 2015
@johnnyquest johnnyquest changed the title a tool that turns a .hip file and its backups into a git repository git based hip file management Jan 23, 2015
@bxyldy
Copy link

bxyldy commented Mar 14, 2015

This is an incredible idea.
It might be cool to add some ROP gallery items that commit when executed, maybe with tagged with the type of ROP, and the output path as the commit message... or something. I'm getting carried away. But I can imagine that being incredibly useful for asset tracking.

@johnnyquest
Copy link
Contributor Author

Glad you like it. I was thinking about not just asset tracking, but scene branching (e.g. storing different variants of a vfx in separate branches), diffing/cherrypicking/merging... if this worked in a practically usable way, that would be awesome.

But yeah, asset tracking would be another major thing. By the way, we did track our own qLib assets in ascii for quite some time (and it's very useful, as you can read all the changes in a diff window).

We switched to binary to get rid of a "compilation" phase of qLib (so right now you can just download/pull and all is ready to use without any preparation or pre-processing). We still have the python (and shell) utility scripts for converting any asset between binary/ascii.

@larsbijl
Copy link

larsbijl commented May 1, 2015

just did a quick test on this.

  • modification times for nodes changes so some nodes will show to be different when nothing changed.
  • inputs sometimes changed without reason:
inputsNamed3
{
49  "" "" 1 "input1"
50  "" "" 1 "input2"
51  "" "" 1 "input3"
52  "" "" 1 "input4"
}

can become

inputsNamed3
{
}
  • .userdata of a node is binary and can't be merged.
  • .OPfallbacks and .OPpreferences are unorded list so will be a different order between commits.

@johnnyquest
Copy link
Contributor Author

hm... maybe certain files could be preprocessed before doing the commit (e.g. sorting the unordered lists). i'm not a big fan of these kinds of "solutions", though :/ as of binary files, well, yeah, there's no merging those (except the "take the one from one of the branches" strategy -- I don't recall the name now).

i haven't yet given up the idea itself, i just don't have time for testing right now.

@johnnyquest
Copy link
Contributor Author

  • hmmm, probably not worth it
  • bin/text conversions shuffle stuff around and add/change stuff that makes diffing a nightmare

closing this :/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants