Updated authored by Peter Gebhard's avatar Peter Gebhard
# What is [GitLab](https://about.gitlab.com)
- Git repository management, task tracking, milestones, activity feeds, teams, and WIKIS!
- Git repository management, task tracking, milestones, activity feeds, teams, and wikis!
- Open Source
- Very actively maintained
- Actively maintained by many open-source contributors
- Why not use GitHub or Bitbucket?
- They don't provide private repositories for large teams (unless you pay a lot!)
......@@ -9,25 +9,25 @@
- Go to https://gitlab.precise.seas.upenn.edu
- Click on the Google 'G' logo and sign in using your Google credentials
- Peter will unblock you
- (Activity: Peter unblocks all new users in the session)
# What are all of these options?
# What are all of these sections on the left?
- Projects
- Each project is a Git repository
- Each project has its own Git repository
- Activity Stream
- Get an up-to-date view of recent activity on the project
- Groups
- Members of a group become default members of each group project
- Members of a group become default members of each project kept in the group page
- Privacy settings
- Private: Project access must be granted explicitly for each user.
- Internal: The project can be cloned by any logged in user. (DEFAULT)
- Public: The project can be cloned without any authentication.
- [Permissions](https://gitlab.precise.seas.upenn.edu/help/permissions/permissions)
- [Types of User Permissions](https://gitlab.precise.seas.upenn.edu/help/permissions/permissions)
# What is [Git](http://www.git-scm.com)
- [Git cheatsheet](https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf)
- Why git?
- [Compared to SVN](https://git.wiki.kernel.org/index.php/GitSvnComparsion): faster, smaller repositories, better merging, better branching, distributed (offline access, full local copy of the repo)
- Typical workflow
- Typical workflow for making changes
- `git pull`
- `git add`
- `git commit -a`
......@@ -35,57 +35,36 @@
- GUIs
- [Github Desktop](https://desktop.github.com)
- [Sourcetree](https://www.sourcetreeapp.com)
- (Activity: Add your ssh key to your profile)
- (Activity: Add your ssh key to your GitLab profile)
![588px-Git_operations.svg](/uploads/fd90a0a434b41b9a2f7289412e619fa8/588px-Git_operations.svg.png)
# Demo
- HACMS Test Project: https://gitlab.precise.seas.upenn.edu/hacms/hacms-test
`git clone git@gitlab.precise.seas.upenn.edu:hacms/hacms-test.git
cd hacms-test
touch <NEW FILE>
git add <NEW FILE>
git commit -m "<YOUR COMMIT MESSAGE HERE>"
git push`
# Wiki editing
- [Markdown syntax](https://gitlab.precise.seas.upenn.edu/help/markdown/markdown)
- [Syntax](https://gitlab.precise.seas.upenn.edu/help/markdown/markdown)
- Make new pages: `[Title](page-name)`
- Drag-and-drop files to attach (DEMO: Add an image to a wiki)
- Drag-and-drop files to attach
# Projects
- Based around a git repo
- Namespaces
- Members and roles
- Assign individual members and roles/permissions
- [User permission levels](https://gitlab.precise.seas.upenn.edu/help/permissions/permissions)
- Privacy levels
- Privacy levels for sharing code internally or publicly
# Groups
- When to use one?
- When you know that all members may be working on a set of shared projects
- When you know that all members will be working on a set of shared projects
# Issues and Milestones
- What are they for?
- Assign tasks/issues to an assignee with a specified date/milestone
- Assign tasks/issues to a person and specify a deadline
- When to use them?
- Use them for keeping track of tasks, keeping track of bugs to be fixed, assigning tasks to a milestone date for tracking progress
## Command line instructions
### Git global setup
`git config --global user.name "Peter Gebhard"
git config --global user.email "pgeb@seas.upenn.edu"`
- Use them for keeping track of tasks, keeping track of bugs to be fixed, assigning tasks to a deadline date for tracking progress
### Create a new repository
### Git setup on the command line (one-time action)
`git clone git@gitlab.precise.seas.upenn.edu:hacms/hacms-test.git
cd hacms-test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master`
`git config --global user.name "YOUR NAME HERE"
git config --global user.email "YOUR EMAIL HERE"`
# More GitLab documentation
- [HELP!](https://gitlab.precise.seas.upenn.edu/help)
- [HELP](https://gitlab.precise.seas.upenn.edu/help)
- [GitLab README](http://doc.gitlab.com/ce/gitlab-basics/README.html)