Синхронізація та багато репозиторіїв

Репозиторії

Центр керування відповідає на питання «який із моїх відкритих репозиторіїв зараз мене потребує?». Він знає лише вкладки активного робочого простору. Репозиторії відповідають на інше: де цей репозиторій, і чи відкритий він будь-де взагалі? Сторінка охоплює все, що Gitcito коли-небудь бачив. Кожен простір, кожну вкладку, плюс те, що знаходить, скануючи теки, на які ви його наводите.

Сторінка «Репозиторії»: кольорові секції відкритих, улюблених, недавніх і
робочих просторів, у кожному рядку назва, власник, гілка та стан
роботи

Секції

Репозиторій може з’явитися в більш ніж одній секції. Навмисно: кожна секція повністю відповідає на своє питання, а не є шматком одного списку.

Секція Що в ній
Відкриті репозиторії Кожна вкладка активного робочого простору просто зараз
Улюблене Репозиторії із зірочкою, в усіх просторах
Недавні Усе, що ви відкривали, новіше згори. Без стелі, на відміну від списку на 8 записів у запускачі
Одна на збережений простір Вкладки того простору, щоб перейти в інший, не перемикаючись спочатку
Усі репозиторії Кожен репозиторій, який знає реєстр, відкритий чи ні

Панель над списком одна смуга: Згорнути все і Розгорнути все, потім поле пошуку на решту ширини, потім перемикач підсумку WIP.

Пошук фільтрує рядки в усіх секціях одразу й ховає секції, у яких нічого не збіглося, щоб результати не тонули під колоною порожніх заголовків. Збігається назва репозиторію, його псевдонім, власник або будь-яка частина шляху. Якщо ніде нічого не пасує, сторінка так і каже, а не стає порожньою.

Коли поле порожнє, кожна секція показана, навіть якщо в ній нічого немає: «Улюблене 0» каже, що секція існує й порожня, і це варто знати. Шумом це стає лише коли ви вже шукаєте.

Кольори секцій

Секції приходять вже забарвленими. Кожен заголовок отримує свій відтінок зі стандартної палітри, зокрема новий робочий простір у мить, коли він з’являється. Йдеться про орієнтацію, не про прикрасу: за секції на проєкт і п’яти вбудованих секцій згори довгий список перестає казати, де ви є, а відтінок робить заголовок упізнаваним ще до того, як ви його прочитали.

Щоб змінити один, скористайтеся ⋮ на його заголовку: Змінити колір… відкриває той самий вибір кольору, що й у групових вкладок і тек, десять готових зразків плюс вільне hex-значення. Скинути колір з’являється, коли ви перевизначили секцію, і повертає призначене за замовчуванням.

Три речі, які варто знати:

  • Призначення стабільне, не випадкове. Ті самі секції отримують ті самі кольори при кожному запуску, а додавання простору ніколи не перефарбовує ті, що вище. Зберігаються лише кольори, які ви змінюєте.
  • Колір локальний для цієї сторінки. Пофарбувати тут секцію простору нічого не каже про цей простір у решті Gitcito. Колір його вкладки це окреме налаштування.
  • Колір розбавляється до низької частки поверхні, а не кладеться повною силою, щоб насичений вибір лишався читабельним тлом і в світлій, і в темній темі. Дуже блідий колір тому виглядає майже нейтрально.

Коли секцій більше ніж десять, палітра повторюється, тож два заголовки можуть ділити відтінок.

Що робить репозиторій відомим

Рядок з’являється тут, коли Gitcito його колись відкрив, або знайшов під текою для сканування. Ніщо не індексується лише тому, що лежить на диску в місці, про яке ви Gitcito ніколи не казали.

Відкриття цієї сторінки також індексує те, що зараз відкрито у вкладці, так відновлені при старті репозиторії отримують рядок без повторного відкриття. Покриваються лише відкриті вкладки, і це стається при першому візиті кожної сесії, не один раз назавжди. Репозиторій, якому ви дали Forget, лишається забутим, доки ви його знову не відкриєте.

Теки для сканування налаштовуються в Параметрах:

  • Глибина це, скільки рівнів каталогів скан спускається нижче кореня (типово 3, стеля 10).
  • Скан зупиняється на репозиторії. Вкладений checkout або підмодуль усередині репозиторію не індексується як окремий рядок.
  • Він ніколи не заходить у каталоги, що починаються з крапки, і пропускає node_modules і подібні теки залежностей.
  • Він читає лише назви тек: знайти каталог .git це те, що робить щось репозиторієм тут. Назва, власник і гілка беруться з файлів усередині .git (HEAD, конфіг), ніколи запуском git.

Рядки

Рядки розкладені по колонках: зірка, назва (враховує псевдонім, якщо ви перейменували), власник (з URL remote origin), чіп гілки, підсумок WIP і дії. Колонки спільні для всієї сторінки, не підганяються під секцію, тож назва в останній секції стоїть під назвою в першій, і список читається як таблиця, не як стос.

Дії в кінці видно в спокої, не з’являються при наведенні: відкрити у вкладці і ⋮, яке відкриває те саме контекстне меню репозиторію, що й правий клік. Це меню, яким користуються скрізь у Gitcito, розширене двома пунктами саме цієї сторінки:

Дія Що робить
Зірка / зняти зірку Додає репозиторій до Улюбленого або прибирає звідти
Locate… Знову вказує переміщену або перейменовану теку. Псевдонім, профіль і зірка лишаються. Якщо в призначення вже були свої налаштування, перемагає призначення
Forget Прибирає запис із цього списку. Ніколи не чіпає теку на диску

Репозиторій, чия тека більше не існує, показується як немає на місці, з Locate… і Forget у рядку замість звичайних дій.

Зірка це перемикач улюбленого, не прапорець масового вибору. Пакетна робота тут іде за секцією, не за виділенням. Див. нижче.

Перетворити дерево тек на робочі простори

Ваша тека з кодом уже кодує потрібне групування. Якщо в ~/Code лежать client-a, client-b і personal, це контексти, між якими ви перемикаєтеся, а робочий простір це саме те, зі своєю смугою вкладок.

Додати теку для сканування… пропонує їх зібрати. Після того як скан проіндексував знайдене, діалог перелічує теки просто всередині тієї, яку ви обрали, з числом репозиторіїв у кожній. Позначте потрібні. Кожна стає простором з однією вкладкою на репозиторій.

Рядок Значення
Назва теки й число Позначена типово. Стає простором
"{n} нових, зливається в …" Простір для цієї теки вже є. Додаються лише нові репозиторії
"Уже в робочому просторі" Робити нічого, посіріло, а не сховано
Назва самого кореня Репозиторії, що лежать розсипом у вибраній теці, не в підтеці. Типово не позначена

Репозиторій кладеться під першу теку під коренем, як глибоко б він не сидів: ~/Code/client-a/nested/app іде в client-a. Теки без репозиторіїв не пропонуються.

Нічого не створюється, доки ви не підтвердите, а скасування лишає індексацію скану на місці. Репозиторії відомі в будь-якому разі, і це те, що кнопка робила й раніше.

Сканувати знову пізніше

Безпечно повторювати. Другий скан додає і ніколи не видаляє:

  • Нові репозиторії дописуються в відповідний простір.
  • Ті, що ви перемістили, перейменували або прибрали вручну, лишаються як ви їх залишили.
  • Простір, який ви перейменували, усе одно впізнається. Gitcito пам’ятає теку, з якої він вийшов, тому зливає, а не плодить дублікат.
  • Репозиторій, видалений з диска, тримає вкладку й показується як відсутній.

Згенеровані простори звичайні. Перейменовуйте, переставляйте, перефарбовуйте або видаляйте їх як будь-які інші. Нічого в них не лишається особливим.

Закрити все, що відкрито

Заголовок Відкриті репозиторії несе кнопку закриття. Закрити репозиторій, коли відкритий один, Закрити всі вкладки, коли кілька. Вона вимкнена, коли нічого не відкрито.

Вона закриває вкладки, які тримають репозиторії, і не чіпає вкладки сторінок, щоб сторінка «Репозиторії», на якій ви стоїте, не закрила сама себе. На диску нічого не чіпається, нічого не комітиться, не стешиться і не відкидається. Вкладка це лише подання.

Закриття кількох спочатку питає і каже, скільки. Закриття одного ні: це дешева помилка, яку скасовує звичайна комбінація повторного відкриття закритої вкладки. Закриті вкладки йдуть на той самий стек із десяти, що й одиночне закриття, і відкриваються в тому порядку, в якому стояли на смузі. Більше ніж десять одразу всі повернути не можна.

Fetch і pull цілої секції

Кожен заголовок секції несе кнопку fetch і роздільну кнопку pull. Вони діють на кожен репозиторій у цій секції, пропускаючи ті, чия тека немає на місці. Репозиторії не зобов’язані бути відкритими. Секція репозиторіїв, які ви в цій сесії не відкривали, працює так само.

Обидва йдуть послідовно, не паралельно, щоб секція з сорока репозиторіїв не піднімала сорок процесів git разом. Рядок стану показує, над яким репозиторієм іде робота і як далеко пройшов прогін, і весь пакет закінчується одним тостом, не одним на репозиторій. Якщо частина падає, тост каже, скільки вдалося і скільки ні. Прогін не зупиняється на першій помилці.

Стрілка поруч із pull вибирає, що означає pull:

Режим Що робить
Pull (fast-forward, якщо можна) Типове для Git. Fast-forward, коли може, merge, коли не може
Pull (лише fast-forward) Відмовляється замість створення merge-коміту
Pull (rebase) Переграє ваші локальні коміти поверх upstream

Цей вибір це одне глобальне налаштування, не на секцію: він описує, як ви робите pull, і виставлення його зі стрілки однієї секції змінює його скрізь. Кожен мультирепозиторний pull його дотримується. Кнопки секцій тут, fetch/pull на груповій вкладці і масовий pull центру керування. Pull одного репозиторію з панелі не зачеплений, бо те меню і так питає, який вид pull вам потрібен.

Панель дій

Відкрити теку…, Клонувати… і Додати теку для сканування…. Три способи занести репозиторій до реєстру Gitcito, з тієї самої сторінки, на якій ви шукаєте вже відомий.

Підсумок WIP

Необов’язковий прапорець. Увімкнений, кожен розгорнутий рядок запускає справжній git status і показує незакомічену роботу та стан синхронізації. Вимкнений, рядки не коштують нічого, крім читання файлів усередині .git.

Він необов’язковий навмисно: підсумок коштує приблизно п’ять процесів git на репозиторій, пачками по вісім, щоб великий реєстр не стопорив інтерфейс. Увімкнути це свідоме «перевір усе, що я зараз бачу», не постійна ціна.

Обмеження

  • Ніщо на цій сторінці не оновлюється за таймером. Відкрийте сторінку знову або вимкніть і ввімкніть підсумок WIP, щоб побачити поточний стан.
  • Підсумок WIP покриває лише розгорнуті секції. Згорнута секція не показує статус узагалі, прапорець стоїть чи ні.
  • Репозиторій відомий лише коли ви його відкрили або просканували теку, яка його містить. Звідси файлову систему не обшукати.
  • Збирання просторів не скасувати одним кроком. Скасування діалогу нічого не створює, але план, який ви підтвердили і потім пошкодували, знімається ручним видаленням просторів.
  • Лише один рівень углиб. Теки нижче першого рівня сплющуються в смугу вкладок простору. client-a/nested/app стає вкладкою в client-a, не текою всередині.
  • «Сканувати зараз» у Параметрах цього не пропонує. Воно сканує всі налаштовані корені разом, де діалог на теку не має сенсу, і лише індексує.
  • Закрити всі відкриває вкладки по одній, до десяти. Закрити більше ніж десять репозиторіїв одразу значить, що найстаріші не повернути зі стека, хоча всі вони ще в Недавніх.
  • Pull не фільтрується за тими, хто відстає. Він робить pull кожного репозиторію в секції, бо дізнатися, хто відстає, значило б спочатку зробити fetch. Pull актуального репозиторію це no-op, це коштує часу, не безпеки.
  • Fetch або pull секції не скасувати зі стека скасування. Fetch нічого не змінює в тому, що у вас уже було. Pull, який робить merge або rebase, відкочується по репозиторію з історії цього репозиторію, не звідси.
  • Кольори секцій косметичні. Вони ніде не фільтрують, не сортують, не групують і не синхронізують, а колір на секції простору це не колір цього простору.
  • Forget прибирає запис зі списку, ніколи з диска. Якщо тека ще там, скан того самого кореня (або повторне відкриття) повертає її одразу.

Дивіться також: Центр керування · Робочі простори, вкладки та групи

Покращити цей переклад на GitHub