-
Notifications
You must be signed in to change notification settings - Fork 19
Git, Markdown, and GitHub for Designers
Git solves several problems software developers have, and it has been doing so since 2005. Three main ones are:
- I need to be able to save my code as it exists, before I change it
- Me and my team need to be able to work on different features simultaneously
- We need to be able to combine those features when they're ready
Git solves these problems as a Version Control System (VCS). There are a lot of them, but most folks use git.
Save points in Git are called commits
. You select which changes you want to save (on a per line basis) and add a note (a commit message
). From here you can keep working and if you ever have an issue, you can always return back to the point you committed.
You can think of branches as lines of work. Git starts with one called main
that you can think of as the trunk. From there if you create a new branch, it remembers all the work from the main branch and you can work on new features, adding commits without affecting the main branch. This lets developers work in parallel on different efforts.
When a feature is done, developers combine their branch into the main branch via a merge
. This is a special commit that combines the changes on your branch with any on the main branch, saving them to the main branch. You also have the option to do a commit message
on a merge, which you should do! You may also see this combining of branches called squash and merge
or rebase
. The distinctions here don't matter for your purposes.
The vast majority of the time, Git is smart enough to do these merges automatically. Sometimes, if two developers touched the same line in the same file, or moved and edited the same file, you can get a merge conflict
. When this happens the later developer just opens the indicated file, looks are the two different changes, and sorts out the final input. Sometimes they check with the other developer if the changes aren't obvious.
Markdown solves one big problem for developers (and others!): I want clear, simple formatting on my text files that won't break from one platform to another! Being able to type in a text editor on my computer, and paste it into slack for review, and then into GitHub for publishing is a lot easier if I don't have to redo WYSIWYG formatting every time.
As a bonus, Markdown is easily typed via keyboard input only, and is also considered very readable in its raw format
# Important main header!
## Subheader
Sentence with **emphasis** and some _other emphasis_
- basic
- bullets
1. numbered
1. bullets
An embedded `code snippet`
GitHub solves two problems for developers:
- a single, central, cloud Git where all the developers refer to and work from
- facilitates code reviews via
Pull Requests
Git doesn't require one main reference point, but it works a lot better if everyone agrees that this server has the primary copy. For us, GitHub is that main point of reference. We handle all the merges into main here.
These are an innovation GitHub created where you can review all the changes prior to doing a git merge
into the main branch.
In git you push
things to other servers. But that's a bit rude to do if you don't have a review of your changes yet! So the pull request
is a middle step where you've pushed your code to GitHub, and you're asking another person to review and then finish the merge by pulling your code into main on GitHub.
You really only need to work with Git through GitHub, unless you are actively interested in doing otherwise. I'll show you what it looks like on the command line at the end, if we have time!
If you're really interested in Git on the command line, here is an introduction and here is literally the whole book on it
Markdown is how GitHub formats its wiki pages and how developers tend to take notes, so it's useful to know. You might even end up liking it enough to use it on your own!
Markdown exists outside of and beyond GitHub. It is a formatting syntax akin to HTML
or LaTeX
. Some favorite markdown editors of mine are HackMD.io and StackEdit, which let you edit and view a document side-by-side, giving the best of both worlds for portability and WYSIWYG.
Let's walk through Markdown as it exists in GitHub
The main thing GitHub does for designers on Caseflow is allow you to version control and review your research documents, much like the developers do with code!
The process looks (something) like:
- create or edit an existing file in the design repo, using markdown format.
- you can even do this outside GitHub and paste your changed text back in! Markdown! 🎉
- scroll on down to the bottom and add a short commit message
- the extended description is optional, but always add a message!
- Select the option `
Create a new branch for this commit and start a pull request.
- optionally, give the branch a memorable name. developers tend to follow
name/issueNum_short_desc
- Click
Propose file change
Your changes have been saved to that branch and you are now dropped into creating a pull request
! It can be a little intimidating, but worry not, it's only a few steps.
- Your commit message from the last screen pre-populates into the title. Feel free to make it clearer & more verbose, as needed.
- Add a longer message about what the change is for in the body.
- For engineering changes we tend to describe what the issue was, what we did, how it affects end users and other developers, etc.
- I suspect for design purposes you'll focus much more on the the research ask being answered.
- Over on the right you should assign the pull request to yourself, and then tag anyone you want to take a look at the work as a Reviewer.
- these steps can also be done after creation, but I tend to forget, personally, if I don't do it here
- Hit
Create Pull Request
That's it, you have a pull request! On engineering we tend to share the URL and tag our reviewers in slack, as well.
If you get asked to review a pull request, go to the PR and look it over!
You'll find four tabs on a pull request, Conversation
, Commits
, Checks
, Files changed
. You only care about the first and last one.
The description the author wrote up and any comments folks make show up here. Start here to get some bearings and context for what you're reviewing.
This is the actual content that will go into the repository.
For Markdown files, you can choose to see them either as source diff
(the exact text with markdown) or as a rich diff
(how GitHub will display it after converting the markdown).
You can leave comments in source diff
mode on any line by clicking on the blue plus on the line and typing in the text box. If you hit add single comment
it posts immediately. If you hit Start a review
if collects them all until you submit the review (keep reading!).
To submit a review you hit the green Review Changes
button in the upper right on the Files changed
tab. You can add a high-level message here as well. I like celebratory emoji. 🎉 💅 🆒
You can submit a review with three different states: Comment
- just leaves all your comments, Approved
- posts any comments and marks the whole thing as approved, and Request Changes
- posts any comments and explicitly asks for more work to be done.
These states can either be just for you all, or GitHub can do special things with them. For example, on the main Caseflow repo a PR cannot be merged without at least one Approved
review.
A final note: Be extra kind and considerate on reviews. It can be very hard to receive feedback under any circumstance, and doubly so when text based. Taking the extra time to add thoughtful wording or extra emoji can make a huge difference in how that feedback feeds.
After you've gotten all the feedback wanted or needed on a PR, you need to merge it into the main branch! Head to the Conversation
tab and scroll to the bottom.
If you see the message This branch is out-of-date with the base branch
and a button labelled Update branch
, that means other folks have changed the main branch since you split off from it. Go ahead and hit that button. If you get any result other than that alert disappearing, ask a developer for help! Most likely you'll just need to resolve you and another designer changing the same file.
Everyone on board and your branch up to date? Hurray! Hit the Merge pull request
button. Add a short, informative message here and hit the final button. You're done! The pull request will mark itself as merged. You can delete your branch as prompted (as the changes are now in main) and close out any related issue.
Github has wonderful documentation. Here's the official info about pull requests, how to review them and how to merge them.
If you want to work with GitHub documents locally, you can also checkout GitHub Desktop. This lets you manage editing the files locally in any editor and then handling the commits in the app. You will need to understand pulling and pushing with git to sync to use this, but it's a great additional option if you want it!
- Home
- Acronyms and Glossary
- Caseflow products
- Caseflow Intake
- Caseflow Queue
- Appeals Consumer
- Caseflow Reader
- Caseflow eFolder
- Caseflow Hearings
- Caseflow Certification
- Caseflow APIs
- Appeal Status API
- Caseflow Dispatch
-
CSUM Roles
- System Admin
- VHA Team Management
- Active Record Queries Resource
- External Integrations
- Caseflow Demo
- Caseflow ProdTest
- Background
- Stuck Jobs
- VA Notify
- Caseflow-Team
- Frontend Best Practices
- Accessibility
- How-To
- Debugging Tips
- Adding a Feature Flag with FeatureToggle
- Editing AMA issues
- Editing a decision review
- Fixing task trees
- Investigating and diagnosing issues
- Data and Metric Request Workflow
- Exporting and Importing Appeals
- Explain page for Appeals
- Record associations and Foreign Keys
- Upgrading Ruby
- Stuck Appeals
- Testing Action Mailer Messages Locally
- Re-running Seed Files
- Rake Generator for Legacy Appeals
- Manually running Scheduled Jobs
- System Admin UI
- Caseflow Makefile
- Upgrading Postgresql from v11.7 to v14.8 Locally
- VACOLS VM Trigger Fix M1
- Using SlackService to Send a Job Alert
- Technical Talks