Редагувати: на відміну від деяких подібних питань, таких як переміщення репортажу SVN з декількома ГБ до Git або /programming/540535/managing-large-binary-files-with-git Мій сценарій не передбачає декількох підпроектів, які може бути легко перетворений у підмодулі git, а також кілька дуже великих двійкових файлів, які добре підходять для git-annex. Це єдине сховище, де двійкові файли є тестовим набором, який щільно поєднується з основним вихідним кодом тієї ж редакції, як, якби вони складали часові активи, такі як графіка.
Я досліджую переключення старого середнього / великого розміру (50 користувачів, 60-ти редакцій, історія 80Gb, робоча копія 2Gb) із сховища коду svn. Оскільки кількість користувачів зросла, в багажнику спостерігається велика потужність, а функції часто розповсюджуються на декілька комітетів, що робить перевірку коду важкою. Крім того, без розгалуження немає способу "погасити" поганий код, огляди можна робити лише після того, як він буде здійснений до ствола. Я розслідую альтернативи. Я сподівався, що ми можемо перейти до git, але у мене є деякі проблеми.
Проблема з поточним репо, що стосується git, - це розмір. Тут багато старої крихти, і очищення її за допомогою --filter-гілки при переході на git може скоротити її на розмір на порядок, приблизно до 5-10 Гб. Це все ще занадто велико. Найбільшою причиною великого розміру сховища є те, що існує багато бінарних документів, які входять до тестів. Ці файли варіюються від .5mb до 30mb, а їх сотні. Вони також мають досить багато змін. Я переглянув підмодулі, git-annex тощо, але тести в підмодулі почуваються неправильно, як і у додатку для багатьох файлів, для яких ви хочете отримати повну історію.
Тож розподілений характер git - це насправді те, що заважає мені його прийняти. Мене не дуже цікавить розподілене, я просто хочу дешевого розгалуження та потужних функцій злиття. Як я припускаю, що 99,9% користувачів git роблять, ми будемо використовувати блаженне, голове центральне сховище.
Я не впевнений, що розумію, чому кожен користувач повинен мати повну локальну історію під час використання git? Якщо робочий процес не є децентралізованим, що це за дані на дисках користувачів? Я знаю, що в останніх версіях git можна використовувати дрібний клон із лише недавньою історією. Моє запитання: чи можливо це зробити як стандартний режим роботи для всієї команди? Чи можна налаштувати git завжди неглибоко, щоб ви мали повну історію лише централізовано, але користувачі за замовчуванням мають лише 1000 обертів історії? Варіантом цього, звичайно, було б просто перетворити 1000 об. В git і зберегти svn repo для археології. Однак у цьому сценарії ми знову зустрінемося з тією ж проблемою після наступних кількох тисяч змін до тестових документів.
- Що таке хороша найкраща практика для використання мерзотника з великими РЕПО , що містять багато бінарних файлів , які ви дійсно хочете історію? Більшість найкращих практик та навчальних посібників, схоже, уникають цієї справи. Вони вирішують проблему кількох величезних двійкових файлів або пропонують повністю скинути бінарні файли.
- Чи є дрібне клонування корисним як звичайний режим роботи чи це "злом"?
- Чи можуть підмодулі використовуватися для коду, коли ви маєте жорстку залежність між версією основного джерела та переглядом підмодуля (наприклад, у бінарних залежностях компіляції або наборі тестових пакетів)?
- Наскільки великий "занадто великий" для сховища git (у приміщеннях)? Чи слід уникати комутації, якщо ми можемо знизити її до 4 Гб? 2 Гб?