Coder Social home page Coder Social logo

lab-02's Introduction

Lab-02

Part I

  • 1. Создайте пустой репозиторий на сервисе github.com (или gitlab.com, или bitbucket.com).
https://github.com/essaqur/Lab-02/
  • 2. Выполните инструкцию по созданию первого коммита на странице репозитория, созданного на предыдещем шаге.
~ $ mkdir timp-lab-02
$ echo "# timp-lab-02" >> README.md
$ git init
$ git add README.md
$ git commit -m "first commit"
$ git remote add origin 
$ git push -u origin master
  • 3. Создайте файл Hello world.cpp в локальной копии репозитория (который должен был появиться на шаге 2). Реализуйте программу Hello world на языке C++ используя плохой стиль кода. Например, после заголовочных файлов вставьте строку using namespace std;.
$ cat > "Hello world.cpp" << EOF
#include <iostream>

using namespace std;
int main(){
 cout << "Hello world" << endl;
}
EOF
  • 4. Добавьте этот файл в локальную копию репозитория.
$ git add "Hello world.cpp"
  • 5. Закоммитьте изменения с осмысленным сообщением.
$ git commit -m "Added new cpp file"
  • 6. Изменитьте исходный код так, чтобы программа через стандартный поток ввода запрашивалось имя пользователя. А в стандартный поток вывода печаталось сообщение Hello world from @name, где @name имя пользователя.
$ alias edit=subl
$ edit "Hello world.cpp"
 #include <iostream>
 #include <string>
 
 using namespace std;
 int main(){
  string name;
  cin >> name;
  cout << "Hello world from " << name << endl;
 }
  • 7. Закоммитьте новую версию программы. Повторно писать команду git add не надо, т.к. файл уже был добавлен в шаге 4.
$ git commit -a -m "Changed cpp file"
  • 8. Запуште изменения в удалёный репозиторий.
$ git push -u origin master
  • 9. История коммитов доступна в удалёном репозитории.

Part II

Note: Работать продолжайте с теми же репоззиториями, что и в первой части задания.

  • 1. В локальной копии репозитория создайте локальную ветку patch1.
$ git checkout -b patch1
  • 2. Внесите изменения в ветке patch1 по исправлению кода и избавления от using namespace std;.
$ edit "Hello world.cpp"
#include <iostream>
#include <string>
 
int main(){
 string name;
 std::cin >> name;
 std::cout << "Hello world from " << name << std::endl;
}
  • 3. commit, push локальную ветку в удалённый репозиторий.
$ git commit -a -m "Fixed cpp file"
$ git push -u origin patch1
  • 4. Ветка patch1 доступна в удалёный репозитории.
  • 5. Создадим pull-request patch1 -> master.
  • 6. В локальной копии в ветке patch1 добавьте в исходный код комментарии.
$ edit "Hello world.cpp"
#include <iostream>
#include <string>
 
int main(){
 string name; 
 std::cin >> name; \\ Input user name
 std::cout << "Hello world from " << name << std::endl;
} 
  • 7. commit, push.
$ git commit -a -m "Added comments"
$ git push -u origin patch1
  • 8. Новые изменения есть в созданном на шаге 5 pull-request
  • 9. В удалённый репозитории выполните слияние PR patch1 -> master и удалите ветку patch1 в удаленном репозитории.
  • 10. Локально выполните pull.
$ git pull origin
  • 11. С помощью команды git log просмотрите историю в локальной версии ветки master.
$ git log
  • 12. Удалите локальную ветку patch1.
$ git branch -d patch1

Part III

Note: Работать продолжайте с теми же репоззиториями, что и в первой части задания.

  • 1. Создайте новую локальную ветку patch2.
$ git checkout -b patch2
  • 2. Измените code style с помощью утилиты clang-format. Например, используя опцию -style=Mozilla.
$ clang-format -i -style=Mozilla "Hello world.cpp"
  • 3. commit, push, создайте pull-request patch2 -> master.
$ git commit -a -m "Changed code style in cpp file"
$ git push -u origin patch2
  • 4. В ветке master в удаленном репозитории измените комментарии, например, расставьте знаки препинания, переведите комментарии на другой язык.
#include <iostream>
#include <string>
 
int main(){
 string name; 
 std::cin >> name; \\ Ввод данных
 std::cout << "Hello world from " << name << std::endl;
}  
  • 5. Убедитесь, что в pull-request появились конфликтны.
  • 6. Для этого локально выполните pull + rebase (точную последовательность команд, следует узнать самостоятельно). Исправьте конфликты.
  • 7. Сделайте force push в ветку patch2
$ git push -f origin patch2
  • 8. Убедитесь, что в pull-request пропали конфликтны.
  • 9. Вмержите pull-request patch2 -> master.

Links

Copyright (c) 2015-2020 The ISC Authors

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.