[SWM] Day3: Repository Tools for SWM(Not only Git)

Repository Tools for SWM


Trello

Trello is a project management tool
Can be used to organise individual project, but especially useful for teams
Basic version is free
Work in process(WIP) limits: Treat the cards like a limited currency – prevents overloading developers

Pros:

  • Free!(at least the basic version)
  • Open to members and non-members
  • Private or Public Boards(limited to a group of members or anyone)
  • Natural user interface, support for agile projects
  • Ease of use, visibility and tracking, collaborative
  • Available on Iphone/Android/Windows
  • Developer API
  • supports Agile feature

Cons:

  • Cards/tasks cannot be assigned to multiple boards/projects
  • No tagging capability
  • Difficult to move/copy etc. multiple cards
  • No due dates per tasks
  • Checklist are not easily visible inside cards
  • Have to pay for the full experience

Managing source code

Using a source code version control or repository system, such as git, SVN(SubVersionN), CVS(Concurrent Versioning system)
Why not just keep copies in backup folders?
Error prone
Hard to roll back
Cannot easily share code with others
Can not do automated testing
enter image description here

Git

  • Git is a (free and open source) distributed version control system
  • Designed originally for command line use
    Git has these concept:
  • Working folder
  • Staging area
  • Local repository
  • Remote repository
    enter image description here
    You work locally, perhaps in a development branch, and when happy add and commit changes to a local repository
    When you are REALLY happy, you can push changes to a remote server, storing a ‘master’ version of the software

Centralized(single user)

Draw how you imagine a simple workflow would look?
enter image description here
- Just a master branch
- Single user
- This is very like how you would use SVN,CVS
- No danger of conflicts as only 1 user

Centralized(multiple users)

enter image description here
  • User check out code and work independently
  • So inevitably one person will update the origin master first
  • The second person will need to update their code from the origin and manage their changes to avoid conflicts

Continuous integration

enter image description here
Once linked to the repository, testing can for example be automatically activated every time someone commits, or every night
  • Produce a visible report of test results
  • Makes sure the system is buildable(compilable)
  • List code coverage
  • Style violation
  • Static analysis

Gitlab CI

GitLab has a built in CI
You submit a script on your repository which the CI server runs
- a bit like the build scripts we looked at last week
GitLab using YAML
- Commit a special file called .gitlab-ci.yml in your project root
- Composed of jobs of work, rules about when they should be run, and scripts of commands
- Set up runners in GitLab CI to action the jobs in the script

Use of Git

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

评论

此博客中的热门博文

[MLE] W2 Multivariate linear regression

[MLE] W1 Introduction

[AIM] MetaHeuristics