Структура каталогов
Каждая ссылка, или помеченный моментальный снимок фиксации, в проекте находится в определенных подкаталогах, таких как trunk
, branches
и tags
. Например, проект SVN с двумя функциями, находящимися в разработке, может выглядеть следующим образом:
sample_project/trunk/README.md
sample_project/trunk/lib/widget.rb
sample_project/branches/new_feature/README.md
sample_project/branches/new_feature/lib/widget.rb
sample_project/branches/another_new_feature/README.md
sample_project/branches/another_new_feature/lib/widget.rb
Рабочий процесс SVN выглядит следующим образом:
- Каталог
trunk
представляет последний стабильный выпуск проекта. - Функции, над которыми ведется активная работа, находятся в подкаталогах в каталоге
branches
. - После завершения работы над функцией каталог функции объединяется с
trunk
и удаляется.
Проекты Git также хранятся в отдельном каталоге. Однако Git скрывает сведения о своих ссылках, сохраняя их в специальном каталоге .git. Например, проект Git с двумя функциями, находящимися в разработке, может выглядеть следующим образом:
sample_project/.git
sample_project/README.md
sample_project/lib/widget.rb
Рабочий процесс Git выглядит следующим образом:
- В каталоге .git репозитория Git хранится полный журнал всех ветвей и тегов репозитория.
- Последний стабильный выпуск находится в ветви по умолчанию.
- Функции, над которыми ведется активная работа, находятся в отдельных ветвях.
- После завершения работы над функцией каталог функции объединяется с ветвью по умолчанию и удаляется.
В отличие от SVN при использовании Git структура каталогов остается одинаковой, но содержимое файлов изменяется в зависимости от ветви.
Включение вложенных проектов
Подпроект — это проект, разработка и управление которым осуществляется вне рамок вашего основного проекта. Обычно вы импортируете подпроект, чтобы добавить некоторые функции в проект без необходимости поддерживать код самостоятельно. При каждом обновлении подпроекта можно синхронизировать его с проектом, чтобы все содержимое подпроекта было актуальным.
В SVN подпроект называется внешним SVN. В Git он называется подмодулем Git. Хотя подмодули Git концептуально аналогичны подпроектам, они не обновляются автоматически; необходимо явно запросить добавление новой версии в проект.
Дополнительные сведения см . в подмодуле инструментов Git в документации по Git.
Сохранение журнала
SVN настроен так, что предполагается, что журнал проекта никогда не изменяется. Git позволяет изменять предыдущие фиксации и изменения с помощью таких средств как git rebase
.
Tip
GitHub поддерживает клиентов Subversion, что может приводить к непредвиденным результатам при использовании Git и SVN в одном проекте. Если вы изменили журнал фиксаций Git, эти же фиксации навсегда останутся в журнале SVN. Если вы случайно зафиксировали некоторые конфиденциальные данные, обратитесь к статье, которая поможет удалить их из журнала Git.
Note
Поддержка подверсии будет удалена с помощью GitHub версии 3.13. Дополнительные сведения см . в блоге GitHub.