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

design notes #9

Open
naturallymitchell opened this issue Dec 16, 2018 · 3 comments
Open

design notes #9

naturallymitchell opened this issue Dec 16, 2018 · 3 comments

Comments

@naturallymitchell
Copy link
Member

naturallymitchell commented Dec 16, 2018

Gut makes it easy to create and manage patches. This makes it easy to keep track of any changes you're working on and to integrate them across many development paths. It does this by saving your project files and allowing you to freely edit them while being sure that you can jump back to your last saved version or add your new changes on top of it to take its place as the latest revision.

When you want to start working on a new change, you can see how it fits into your plans while working on new patches for it, and editing the change's notes along the way. Once you have a group of changes and their patches, you can send those files to another Gut user, to easily drop them into their .gut/ directory and work with these collaborators.

When you want to make multiple lines of development with several changes in them, just add a new line while you have that current version. From there, you can see what other changes have already been started, and use them, or you can start making your own change with new patches.

Terms

  • patch: lines added and removed to one file or a group of files in a project
  • change: work done/todo, reference to an ordered list of patches, see change management about workflow
  • line: a way to have multiple histories simultaneously which can themselves also go in other directions before merging back to prime or becoming a new prime line
  • prime: a kind of line with the set of changes that takes an intial copy up to the current version - and likewise back to the original
  • associate: a kind of line that start from any part of the prime line
  • hash: blake2 of a file or dir
  • .gutomit: leave out files or directories from your project (ignore/exclude)
  • .gut/: directory that gut uses to run

How Gut Works

  • gut start copies your current working directory to .gut/current/
  • // edit your files //
  • gut check: show what's changed compared to "last prime" patch or other picked line -- uses hashes, checks sanity before running
  • gut diff: show differences
  • gut patch: creates the patch and add it to current change
  • gut change: a) show current change name and body (b) edit its name and body (c) show current patches (d) show which lines its on
  • gut line: (a) show current (b) list available (c) graph where they come from and others associated (d) switch lines
@naturallymitchell
Copy link
Member Author

naturallymitchell commented Jan 8, 2019

if gut check shows some files have changed and you want to create a patch to the last current version, then run gut patch and that will create a patch, add it to the current line, and update .gut/current/'s contents to match that latest patch

@naturallymitchell
Copy link
Member Author

naturallymitchell commented Jan 29, 2019

check checks if project dir hash matches current line. line hashes will be in line documents' dirhash field. for now they can be calculated each time
check should return:

  • which line you're on
  • if there are changes, a simple view, and say to run diff for full info
  • integrity of gutdir and the project, sanity check

@naturallymitchell
Copy link
Member Author

naturallymitchell commented Jan 29, 2019

I think prime is the default line we'll create. but I don't like that mainline sounds good, has good meaning, and is ambiguous

prime is whichever one you and others use regularly. every other line is an associate

sineemore added a commit that referenced this issue Jan 31, 2019
Gut command names should follow the design notes: #9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant