Git изнутри: введение (перевод)

Основы работы с удаленным репозиторием¶

git clone — создание копии (удаленного) репозитория

Для начала работы с центральным репозиторием, следует создать копию оригинального проекта со всей его историей локально.

Клонируем репозиторий, используя протокол http:

git clone http://user@somehost:port/~user/repository/project.git

Клонируем репозиторий с той же машины в директорию :

git clone /home/username/project myrepo

Клонируем репозиторий, используя безопасный протокол ssh:

git clone ssh://user@somehost:port/~user/repository

У git имеется и собственный протокол:

git clone git://user@somehost:port/~user/repository/project.git/

Импортируем svn репозиторий, используя протокол http:

git svn clone -s http://repo/location

-s

git fetch и git pull — забираем изменения из центрального репозитория

Для синхронизации текущей ветки с репозиторием используются команды git fetch и git pull.

git fetch — забрать изменения удаленной ветки из репозитория по умолчания, основной ветки; той, которая была использована при клонировании репозитория. Изменения обновят удаленную ветку (remote tracking branch), после чего надо будет провести слияние с локальной ветку командой git merge.

git fetch /home/username/project — забрать изменения из определенного репозитория.

Возможно также использовать синонимы для адресов, создаваемые командой :

git remote add username-project /home/username/project

git fetch username-project — забрать изменения по адресу, определяемому синонимом.

Естественно, что после оценки изменений, например, командой , надо создать коммит слияния с основной:

git merge username-project/master

Команда сразу забирает изменения и проводит слияние с активной веткой.

Забрать из репозитория, для которого были созданы удаленные ветки по умолчанию:

git pull

Забрать изменения и метки из определенного репозитория:

git pull username-project --tags

Как правило, используется сразу команда .

git push — вносим изменения в удаленный репозиторий

После проведения работы в экспериментальной ветке, слияния с основной, необходимо обновить удаленный репозиторий (удаленную ветку). Для этого используется команда git push.

Отправить свои изменения в удаленную ветку, созданную при клонировании по умолчанию:

git push

Отправить изменения из ветки master в ветку experimental удаленного репозитория:

git push ssh://yourserver.com/~you/proj.git master:experimental

В удаленном репозитории origin удалить ветку experimental:

git push origin :experimental

В удаленную ветку master репозитория origin (синоним репозитория по умолчанию) ветки локальной ветки master:

git push origin master:master

Отправить метки в удаленную ветку master репозитория origin:

git push origin master --tags

Изменить указатель для удаленной ветки master репозитория origin (master будет такой же как и develop)

git push origin origin/develop:master

Добавить ветку test в удаленный репозиторий origin, указывающую на коммит ветки develop:

git push origin origin/develop:refs/heads/test

Что такое Obsidian?

Obsidian хранит свои данные в папках с файлами Markdown, поэтому нет никакой блокировки, и вы можете получить доступ к своим заметкам с помощью любого текстового редактора или приложения Markdown. Существующие папки с файлами Markdown можно открывать в Obsidian. Ваши заметки хранятся локально и могут храниться в облаке с помощью iCloud, Google Drive, GitHub и др.

Эти ценности резонируют со мной. Они хранят мои данные в безопасности и под моим контролем и позволяют мне решать, какие функции мне нужны, а какие нет. Многие из его более продвинутых функций отключены по умолчанию, что упрощает использование менее технических пользователей. Но под капотом много энергии.

Приложение является модальным и предлагает режимы предварительного просмотра и редактирования. Первый скрывает разметку и отображает изображения, а второй отображает синтаксис Markdown и путь к изображениям. Ссылки можно щелкнуть в режиме предварительного просмотра, но в режиме редактирования вам нужно Commandщелкнуть. Думаю, это упрощает редактирование ссылок. Вы выбираете, какой режим активен по умолчанию.

Приложения на основе Electron доступны для macOS, Windows и Linux. В настоящее время нет веб-приложения, а мобильные приложения находятся на стадии альфа-версии. Я слышал только положительные отзывы от пользователей, которые их тестируют.

Команда chmod

Команда chmod предназначена для изменения прав доступа файлов и директорий в Linux. Название команды произошло от словосочетания «change mode».

Синтаксис команды chmod следующий:

Разрешения можно задавать двумя способами:

  • Числом
  • Символами

Запись прав доступа числом

Пример:

В данном формате права доступа задаются не символами rwx, как описано выше, а трехзначным числом. Каждая цифра числа означает определенный набор прав доступа.

  • Первая цифра используется для указания прав доступа для пользователя.
  • Вторая цифра для группы.
  • Третья для всех остальных.

В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):

Число Разрешения Символьное обозначение
разрешения отсутствуют
1 x — запуск —x
2 w — изменение -w-
3 x+w — запуск+изменение -wx
4 r — чтение r—
5 r+x — чтение+запуск r-x
6 r+w — чтение+изменение rw-
7 r+w+x — чтение+изменение+запуск rwx

Рассмотрим использование команды chmod с записью прав доступа числом на примере. Установим для файла права доступа 764:

Это означает (см. таблицу выше), что для файла myfile мы устанавливаем права доступа 764, которые означают:

  • 7 — права для владельца-пользователя. Владелец файла может читать, изменять и запускать файл (r+w+x).
  • 6 — права для группы. Пользователи, которые принадлежат группе могут читать и изменять файл (r+w).
  • 4 — права для всех остальных. Все остальные могут только читать файл (r).

Если записать 764 с помощью символов (см. таблицу), то мы получим: «rwxrw-r-».

В таблице ниже приведены некоторые часто используемые значения числовых значений прав доступа:

Числовоеобозначение «rwx»-обозначение Описание
400 -r——— Владелец файла может только читать файл. Для всех остальных все действия с файлом запрещены.
644 -rw-r—r— Все пользователи могут читать файл. Владелец может изменять файл.
660 -rw-rw—- Владелец и группа могут читать и изменять файл. Для всех остальных все действия с файлом запрещены.
664 -rw-rw-r— Все могут читать файл. Владелец и группа могут изменять.
666 -rw-rw-rw- Все могут читать и изменять файл.
700 -rwx—— Владелец может читать, изменять и запускать файл. Для всех остальных все действия с файлом запрещены.
744 -rwxr—r— Все могут читать файл. Владелец может также изменять и запускать файл.
755 -rwxr-xr-x Все могут читать и запускать файл. Владелец может также изменять файл.
777 -rwxrwxrwx Все пользователи могут читать, изменять и редактировать файл.

Запись прав доступа символами

Примеры:

Как вы можете видеть, в данном формате права доступа задаются символами rwx, но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+» и «» и такие символы как, например, «g» или «u».

Общий синтаксис можно записать примерно так:

Обозначения для владельцев файла следующие:

Обозначение Описание
u Владелец-пользователь.
g Группа.
o Все остальные.
a Вообще все.

Математические операции означают следующее:

Оператор Описание
+ Добавляет к текущим правам доступа новое разрешение.
Удаляет из текущих прав доступа определенное разрешение.
= Устанавливает полностью новые разрешения (предыдущие перезаписываются новыми).

В одной команде можно перечислять владельцев и их разрешения через запятую (см. пример ниже).

Рассмотрим примеры:

  • В данном случае мы не используем обозначения для владельцев, а значит разрешения устанавливаются для всех пользователей. «+x» означает — установить разрешение на запуск (x) файла для всех пользователей. Это эквивалентно выполнению команды: chmod a+x myfile1.

  • Здесь используется обозначение g и символ равенства «=». Это означает, что для группы мы устанавливаем права доступа на чтение и запись файла (rw).

  • Для владельца файла (u) мы удаляем разрешение на изменение (w) файла.

  • Разрешаем владельцу (u) и группе (g) запускать файл (x).

  • Это как раз тот случай, когда мы перечисляем владельцев через запятую и устанавливаем для них разрешения. Для владельца файла (u) мы разрешаем запуск файла, для группы (g) мы запрещаем изменять файл, для всех остальных (o) мы запрещаем читать файл.

Рекурсивное изменение прав доступа

Если необходимо изменить права доступа на все файлы в директории, включая вложенные директории, то для этого существует опция -R, что означает рекурсивное изменение прав доступа для директорий и их содержимого. Например, изменим права доступа у всех файлов в директории Mydir:

И еще один момент. Если пользователь не является владельцем файла, но ему нужно изменить права доступа у данного файла, то команду chmod необходимо выполнять с использованием sudo, например:

init

Начать отслеживать изменения — инициализаци или начало работы Git

$ git init

Initialized empty Git repository in C:/Users/aolegovich/Desktop/Sites/hello-world/.git/

По умолчанию репозиторий хранится в подкаталоге с названием «.git» в
корневом каталоге рабочей копии дерева файлов, хранящегося в репозитории.

Любое файловое дерево в системе можно превратить в репозиторий git, отдав команду создания репозитория
из корневого каталога этого дерева
(или указав корневой каталог в параметрах программы)

Важно понимать, что инициализировать репозиторий нужно в директории с проектом.

На одном копьютере могут быть десятки проектов и каждый из них может иметь свой репозиторий,
который, в свою очередь может быть подлючён к github, gilab или куда-то ещё.

Перейдя из одной директории в другую вы перемещаетесь между этими репозиториями. Благодаря файлам
.gitinit git автоматически понимает, что вы уже в другом месте и работаете с
другим проектом.

Можно настроить ваш терминал
bash
или zsh так, чтобы он показывал вам
с каким именно репозиторием вы работаете и какая ветка активна.. Создать файл

Создать файл

$ touch index.html

Одиночный разработчик, единственная ветвь

Даже если вы являетесь единственным разработчиком вашего проекта и (по крайней мере, пока), вы не планируете его менять, система управления версиями по-прежнему полезна. Это позволяет:

  • Вернитесь к некоторой рабочей версии. Если вы работаете над своим проектом и понимаете, что вы полностью напортачили, подход, который вы пробовали, не работает, и вы не знаете, как заставить его работать, приятно иметь возможность просто вернуться к последнему рабочему версии и начать заново.

    Это означает, что вы должны совершить, т.е. сделать снимок ваших изменений, когда у вас есть рабочая версия (ну, есть исключения, см. ниже). Чтобы не потерять много работы, вы должны совершать довольно часто, лучше всего (см. Ниже), когда вы завершаете одиночную функцию, отдельную проблему или отдельную часть функции или проблемы.

    Вы также хотели бы знать, что вы сделали, и то, над чем вы работали в последнее время. Это означает, что вы должны описывать каждый набор изменений (каждый фиксатор).

  • Аннотировать файл/просмотр истории. Если у вас нет идеальной памяти, иногда вам нужно знать, почему (и когда, и в случае, когда есть несколько разработчиков, и кто), вы написали заданный набор строк. Комментарии не всегда достаточно. Для этого вы можете использовать (если ваша система управления версиями предоставляет) линейные аннотации истории файлов ( или ) или другие аналогичные инструменты, такие как так называемый поиск “pickaxe” в Git, где вы выполняете поиск/просмотреть историю для коммитов, которые ввели или удалили заданную строку.

    Чтобы это было полезно, вам нужно написать хорошие сообщения о совершении, описать изменение и намерение изменения, чтобы вы знали, почему было сделано изменение.

  • История поиска, чтобы найти ошибки. Современные системы управления версиями предлагают альтернативные (для вставки инструкций печати или отладчика) способ поиска ошибок… в некоторых случаях. Когда вы замечаете ошибку или получаете ошибку, и ошибка не является результатом последнего изменения, вы можете использовать систему управления версиями (), чтобы автоматически найти фиксацию, введшую ошибку (первая фиксация, которая дала ошибку), Система контроля версий находит такую ​​фиксацию, используя биссектную историю проекта, извлекая (проверяя) версии, которые вы отмечаете как хорошие (без ошибок) или плохие, пока не найдет коммиты, которые ввели ошибку.

    Для этого вы всегда должны гарантировать, что версия работает (или, по крайней мере, компилирует), прежде чем совершать ее, иначе вы не будете ebale, чтобы решить, есть ли у команды ошибка или нет. Вы должны держать коммиты маленькими (с небольшим количеством изменений), поэтому, когда вы обнаружите фиксацию, которая ввела ошибку, вам нужно будет проверить только количество бесплатных строк, затронутых изменением. Вам также понадобятся хорошие сообщения о фиксации, поэтому вы должны знать, почему было сделано изменение (и решить, правильно ли это изменение).

Шаг 1 — Установка GIT

Вариант 1 — Установка GIT на Windows

Установка GIT на Windows, осуществляется также просто, как и установка любого другого приложения; загрузка установщика и его запуск.  Выполните данные шаги для установки GIT на Windows:

  1. Посетите этот сайт и скачайте установщик GIT для Windows.
  2. После загрузки, запустите установку двойным нажатием мыши. Следуйте инструкциям на экране, продолжайте нажимать Next (Далее) и наконец Finish (Финиш) для успешного завершения установки.

  1. Запустите командную строку и впишите следующие команды в терминале:
git config --global user.name "John Smith"
git config --global user.email "[email protected]"

Вариант 2 — Установка GIT на Mac

Существует множество способов для установки GIT на Mac, есть даже вероятность того, что GIT уже установлен на вашем компьютере. Eсли у вас установлен XCode; выполните следующую команду в терминале для проверки:

git --version

Если ваш результат будет схож с таким git version 2.7.0 (Apple Git-66), тогда можете смело приступать к работе с GIT, если нет, то выполните следующие шаги:

  1. Посетите этот сайт и скачайте последнюю версию установщика для Mac.
  2. Следуйте инструкциям установщика и завершите установку.

  1. Используйте команду git —version снова, для подтверждения того, что установка была успешна.
  2. Выполните следующие команды в терминале для настройки вашего имени пользователя и адреса электронной почты, которые будут связаны с вашим GIT аккаунтом:
git config --global user.name "John Smith"
git config --global user.email "[email protected]"

Вариант 3 — Установка GIT на Linux

Если вы являетесь пользователем Linux, вы должны уметь устанавливать программы и пакеты на ваш компьютер используя простые команды apt-get или yum install; чтож, установка GIT ничем отличается:

Для пользователей Debian/Ubuntu (apt-get):

  1. Откройте терминал и выполните следующую команду:
sudo apt-get update
sudo apt-get install git
  1. Проверьте правильности установки командой git —version.
  2. Выполните следующие команды в терминале для настройки вашего имени пользователя и адреса электронной почты, которые будут связаны с вашим GIT аккаунтом:
git config --global user.name "John Smith"
git config --global user.email "[email protected]"

Fedora (yum/dnf):

Вы можете получить пакеты GIT, используя как yum, так и dnf.

  1. Откройте терминал и выполните следующие команды:
sudo dnf install git
sudo yum install git
  1. Проверьте правильность установки командой git —version.
  2. Выполните следующие команды в терминале для настройки вашего имени пользователя и адреса электронной почты, которые будут связаны с вашим GIT аккаунтом:
git config --global user.name "John Smith"
git config --global user.email "[email protected]"

Зачем новичку учить Git

Git используется в большинстве компаний, где над проектом работает хотя бы два разработчика:

  • Новый человек приходит в компанию и клонирует репозиторий проекта на ПК.
  • Получает задачу, создаёт новую ветку и пишет код.
  • Когда всё готово — отправляет запрос на добавление кода в master-ветку.
  • Другие разработчики смотрят код, оставляют комментарии и указывают на ошибки.
  • Новичок дорабатывает код, обновляет master-ветку и переходит к следующей задаче.

Это общая схема того, как проходит командная работа в проекте. В ней не учтены правила использования Git, которые каждая команда пишет под себя. Например, у каждой команды свой порядок проверки кода и свои критерии его готовности для добавления в master-ветку.

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе

Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии

Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

Возможности

Система спроектирована как набор программ, специально разработанных с учётом их использования в скриптах. Это позволяет удобно создавать специализированные системы контроля версий на базе Git или пользовательские интерфейсы. Например, Cogito является именно таким примером оболочки к репозиториям Git, а Stacked Git использует Git для управления коллекцией исправлений (патчей).

Git поддерживает быстрое разделение и слияние версий, включает инструменты для визуализации и навигации по нелинейной истории разработки. Как и Darcs, BitKeeper, Mercurial, Bazaar и Monotone, Git предоставляет каждому разработчику локальную копию всей истории разработки, изменения копируются из одного репозитория в другой.

Удалённый доступ к репозиториям Git обеспечивается git-daemon, SSH- или HTTP-сервером. TCP-сервис git-daemon входит в дистрибутив Git и является наряду с SSH наиболее распространённым и надёжным методом доступа. Метод доступа по HTTP, несмотря на ряд ограничений, очень популярен в контролируемых сетях, потому что позволяет использовать существующие конфигурации сетевых фильтров.

Область видимости typedef

Поскольку область видимости является свойством идентификатора, идентификаторы подчиняются тем же правилам области видимости, что и идентификаторы переменных: , определенный внутри блока, имеет область видимости блока и может использоваться только внутри этого блока, тогда как , определенный в глобальном пространстве имен, имеет область видимости файла и может использоваться до конца файла. В приведенном выше примере и можно использовать только в функции .

Если вам нужно использовать один или несколько в нескольких файлах, их можно определить в заголовочном файле и включить через в любые файлы исходного кода, которые должны использовать это определение:

mytypes.h:

Определения , включенные таким образом, будут импортированы в глобальное пространство имен и, следовательно, будут иметь глобальную область видимости.

О Wiki на GitHub

Wii на GitHub можно использовать в качестве сайта документации. Вот пример API Basecamp, который размещен на GitHub.

В отличие от других Wiki, создаваемый Wiki на GitHub — это собственный репозиторий, который можно клонировать и работать локально. (Если посмотреть на ссылку «Клонировать эту Wiki локально», то увидим, что это хранилище, отдельное от основного хранилища кода.) С файлами можно работать локально, и фиксировать их в хранилище Wiki. Можно расположить ссылки на вики-страницы на боковой панели.

Wiki-страницы на GitHub используют синтаксис Markdown. Для этого есть специальная версия, названная Github-flavored Markdown или GFM. Эта версия Markdown позволяет создавать таблицы, классы для блоков кода (для корректной подсветки синтаксиса) и т.д.

Поскольку с вики-файлами можно работать локально, можно использовать другие инструменты (например, генераторы статичных сайтов или даже DITA) для генерации файлов Markdown при желании. Работая локально, можно обрабатывать переиспользование, условную фильтрацию и другую логику за пределами вики-сайта GitHub. После чего можно вывести свой контент в виде файлов Markdown и зафиксировать их в своем хранилище GitHub.

Warning: Git используется только для отслеживания текстовых файлов. Не работает Git c большими двоичными файлами, такими как аудиофайлы, видеофайлы, файлы Microsoft Word или файлы Adobe PDF. Системы контроля версий действительно не справляются с такими форматами, и размер репозитория будет возрастать в геометрической прогрессии. Используя Git для управления документацией, такие файлы исключаются через файл .gitignore. Можно также исключить изображения, так как они увеличивают размер вашего репо.

Добавление удалённых репозиториев

В предыдущих разделах мы уже упоминали и приводили примеры добавления удалённых репозиториев, сейчас рассмотрим эту операцию подробнее. Для того, чтобы добавить удалённый репозиторий и присвоить ему имя (shortname), просто выполните команду :

Теперь, вместо указания полного пути, вы можете использовать . Например, если вы хотите получить изменения, которые есть у Пола, но нету у вас, вы можете выполнить команду :

Ветка из репозитория Пола сейчас доступна вам под именем r. Вы можете слить её с одной из ваших веток или переключить на неё локальную ветку, чтобы просмотреть ее содержимое. Более подробно работа с ветками рассмотрена в главе «Ветвление в Git».

Как найти файлы в категории «Другое» на Mac?

Файлы в категории «Другое» обычно можно найти двумя способами: просматривая разные папки, составляющие категорию «Другое», или используя сторонний анализатор дисков или утилиту очистки.

1. Поиск других файлов вручную

Большинство файлов, которые занимают Другое хранилище, принадлежат папке библиотеки Mac. Вот быстрый способ перейти в эту папку:

  1. Открыть Finder.
  2. Нажмите Перейти в строке меню и выберите Перейти в папку. Кроме того, вы можете получить к нему доступ, используя Shift + команда + G ярлык в окне Finder.
  3. В текстовом поле введите ~ / Библиотека.
  4. Нажмите Идти.

Finder откроется в папке библиотеки. Здесь вы найдете список различных папок. Большинство этих папок относятся к категории «Другое хранилище». Однако вы можете найти основную часть этой категории в двух папках: «Кэш» и «Поддержка приложений».

2. Поиск других файлов с помощью стороннего инструмента

Существуют различные бесплатные и платные утилиты анализатора диска для macOS, которые позволяют анализировать ваше хранилище, чтобы найти файлы, входящие в категорию «Другое». Некоторые из этих утилит включают OmniDiskSweeper, DiskInventoryX, CleanMyMac X и MacClearner Pro.

Хранилище DigitalOcean Spaces

Чтобы настроить хранилище DigitalOcean Spaces:

  1. Создайте учетную запись DigitalOcean.
  2. .
  3. Создайте папку для хранения резервных копий внутри виртуального пространства. Запомните путь к этой папке и URL-адрес пространства. Эти данные понадобятся вам в дальнейшем для настройки хранилища DigitalOcean Spaces.
  4. . Сохраните их, так как они понадобятся вам в дальнейшем для настройки хранилища DigitalOcean Spaces. Имейте в виду, что секретный ключ отображается только один раз, в момент создания. Получить его позже невозможно.
  5. Войдите в Plesk и перейдите в раздел Сайты и домены > ваша подписка > Резервные копии > Настройки удаленного хранилища > DigitalOcean Spaces Backup.
  6. В меню “Поставщик услуг” выберите “DigitalOcean Spaces”.
  7. Вставьте URL-адрес виртуального пространства, путь к папке для хранения резервных копий, ключ доступа и секретный ключ в соответствующие поля, а затем нажмите  OK.

Хранилище DigitalOcean настроено. Теперь вы можете выбирать его при создании резервной копии вручную или по расписанию .

Использование обсидиана для организации ваших заметок

По умолчанию, когда вы открываете Obsidian, вы находитесь в режиме редактора, где вы можете редактировать свои заметки или писать новые. В этом режиме виден весь синтаксис Markdown. Нажмите Ctrl + E, чтобы переключиться в режим предварительного просмотра, где синтаксис исчезнет, ​​а заметка будет отформатирована.

Ссылки, теги и отношения

В других приложениях для создания заметок вы можете упорядочивать файлы по папкам или с помощью тегов и категорий. Obsidian похож в том, что он поддерживает как папки, так и теги. Тем не менее, он также заимствует логику вики и решений, таких как Tiddlywiki, чтобы разрешить связывание внутренних заметок.

Если вы введете тег (с хешем перед словом, например #tag), Obsidian обнаружит его и назначит заметке независимо от того, где он находится в вашем тексте.

Если вы предпочитаете добавлять теги в одну выделенную строку, вы можете сделать то же самое, набрав их как:

Теги:

Обратите внимание на стрелку справа от экрана? Щелкните по нему, чтобы развернуть панель. Перейдите на вторую вкладку с символом решетки, и вы увидите все теги, обнаруженные в вашей текущей заметке

Вы также увидите номер рядом с каждым тегом. Это относится к тому, сколько раз тег использовался в вашем хранилище. Вы можете использовать это, чтобы найти другие заметки, используя тот же тег.

Вы также можете сделать обратное (увидеть, какие заметки связаны с текущей заметкой), перейдя на панель «Обратные ссылки» на правой панели экрана.

Самое приятное то, что Obsidian может обнаруживать упоминания заметки, даже если они на самом деле не отформатированы как ссылки, а набраны в виде обычного текста. Вы можете перейти к любой заметке, упомянутой на панели «Обратные ссылки», щелкнув по ней, чтобы открыть ее на новой панели.

Основы Git

При каждом сохранении работы Git создает фиксацию. Фиксация — это моментальный снимок всех файлов в момент времени.
Если файл не был изменен с одной фиксации на следующий, Git использует сохраненный ранее файл. Этот проект отличается от других систем, в которых хранится первоначальная версия файла, и при этом сохраняются записи о различиях.

Фиксации создают ссылки на другие фиксации, формируя график истории разработки. Можно вернуть код к предыдущей фиксации, проверить, как изменились файлы с одной фиксации до следующей, и просмотреть сведения, например, где и когда были внесены изменения. Фиксации определяются в Git по уникальному криптографическиму хэшу содержимого фиксации. Так как все хэшировано, невозможно внести изменения, потерять информацию или повредить файлы, не обнаруживая их.

Ветви

Каждый разработчик сохраняет изменения в собственном репозитории локального кода. В результате может существовать множество различных изменений, основанных на одной фиксации. Git предоставляет средства для изоляции изменений и последующего слияния их обратно. Ветви, являющиеся облегченными указателями на выполняемые задачи, управляют этим разделением. После завершения работы, созданной в ветви, ее можно объединить в основную (или магистральную) ветвь команды.

Файлы и фиксации

Файлы в Git находятся в одном из трех состояний: изменено, промежуточное или зафиксировано. При первом изменении файла изменения существуют только в рабочем каталоге. Они еще не являются частью фиксации или истории разработки. Разработчик должен разместить измененные файлы для включения в фиксацию. Промежуточная область содержит все изменения, которые включаются в следующую фиксацию. Когда разработчик довольны промежуточными файлами, они упаковываются как фиксация с сообщением с описанием изменений. Эта фиксация станет частью истории разработки.

Промежуточное хранение позволяет разработчикам выбирать, какие изменения файлов следует сохранить в фиксации, чтобы разбить большие изменения на ряд небольших фиксаций. Уменьшая область фиксаций, проще Просмотреть журнал фиксаций, чтобы найти определенные изменения в файлах.

Доступ к GitLab по ssh

Перейдите в домашнюю директорию и сгенерируйте ключ с помощью

ssh keygen

cd

ssh-keygen -t rsa -b 2048

Ключ проще всего назвать

gitlab_com_rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Andrei/.ssh/id_rsa): gitlab_com_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gitlab_com_rsa
Your public key has been saved in gitlab_com_rsa.pub
The key fingerprint is:
SHA256:wAhrNr63vvUrQvhP6dbekTHlk6wtP7Y+fIJWnpLyCQN Andrei@DESKTOP-OP43ER5
The key&339;s randomart image is:
+——-+
| . . |
| 2 = + . |
|E * = = |
| . + . B . |
| … =+ S |
| .. .. =. |
| .o..*=+ |
| ..=J=*+o. |
| +PP=+*= |
+———+

Создайте файл

config

touch ~/.ssh/config

vi ~/.ssh/config

Копируем содержимое ключа в буфер.

В

Windows

GitBash

cat ~/.ssh/gitlab_com_rsa.pub | clip

В

Linux

если стоит
xclip

xclip -sel clip < ~/.ssh/gitlab_com_rsa.pub

GitLab.com

Пример

Теперь можно клонировать из GitLab по SSH

mkdir test

cd test

git init

touch .gitignore

git clone [email protected]:ВАШ_АККАУНТ/ИМЯ_ПРОЕКТА.git

Local Persistent Volume — хранилище Kubernetes на локальных дисках

Локальные тома, как и nfs, не имеют встроенного провизионера, так что нарезать их можно только вручную, создавая PV. Есть внешний provisioner — https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner, но лично я его не проверял.

Создаем SC sc-local.yaml.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

Создаем вручную PV pv-local-node-1.yaml, который будет располагаться на kub-node-1 в /mnt/local-storage. Эту директорию необходимо вручную создать на сервере.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-local-node-1
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /mnt/local-storage
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - kub-node-1

Создаем PVC pvc-local.yaml для запроса сторейджа, который передадим поду.

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: local-volume
spec:
  storageClassName: "local-storage"
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

И в завершении создадим тестовый POD pod-with-pvc-local.yaml для проверки работы local storage.

kind: Pod
apiVersion: v1
metadata:
  name: pod-with-pvc-local
spec:
  containers:
    - name: app
      image: alpine
      volumeMounts:
      - name: data
        mountPath: /mnt
      command: ["/bin/sh"]
      args: 
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: local-volume

Применяем все вышеперечисленное в строго определенном порядке:

  1. SC
  2. PV
  3. PVC
  4. POD
# kubectl apply -f sc-local.yaml
# kubectl apply -f pv-local-node-1.yaml
# kubectl apply -f pvc-local.yaml
# kubectl apply -f pod-with-pvc-local.yaml

После этого посмотрите статус всех запущенных абстракций.

Проверим, что Local Persistent Volume правильно работает. Зайдем в под и создадим тестовый файл.

# kubectl exec -it pod-with-pvc-local sh
# echo "local srorage test" >> /mnt/local.txt

Теперь идем на сервер kub-node-1 и проверяем файл.

# cat /mnt/local-storage/local.txt 
local srorage test

Все в порядке. Файл создан.

Если у вас возникли какие-то проблемы с POD, то в PVC будет ошибка:

waiting for first consumer to be created before binding

И в это же время в поде:

0/6 nodes are available: 1 node(s) didn't find available persistent volumes to bind, 5 node(s) had taints that the pod didn't tolerate.

Возникли ошибки из-за того, что в описании PV я ошибся в названии сервера, где будет доступен local storage. В итоге pod запускался, проверял pvc, а pvc смотрел на pv и видел, что адрес ноды с pv не соответствует имени ноды, где будет запущен pod. В итоге все висело в ожидании разрешения этих несоответствий.

С локальным хранилищем разобрались, можно использовать в работе.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: