|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
|
Git как механизм сравнения репозиториев14.08.2018, 23:56. Показов 5458. Ответов 12
Добрый день, проконсультируйте плииз.
Есть десяток папок с одним одинаковым текстовым файлом в разных проектах. Любой из владельцев папки может поменять файл (не часто и не значительно). Хочу "натравить" на них гит, поднять гит-сервер и написать утилиту для поиска отличий. Задача: отловить отличия файлов и выдать в отчет (на ноде). Нужен ТОЛЬКО "факт отличия" - контроль версий не важен! Раньше они сидели на одном сервере и отличия вылавливались (отдельной утилитой) по "дате изменения". Даже если поменяли 2е из 10ти в разное время можно было вывести в табличку "прошло с изменений" и у одного получалось 2 дня, у другого 5 дней, а у всех остальных 50 дней - хватало для начала решения конфликтов сравнением построчно. Теперь надо разнести папки на разные компы и следить через локальную сеть. Где время может "поломаться" и некоторые могут быть оффлайн. После решения/исправления конфликта хочу "залить слепок" в гит и начать "новое отслеживание" не привязанное к дате изменения файлов. Гит на такое способен? Или это как "из пушки по воробьям" и проще по md5(контрольная сумма) файла сравнивать? Еще один нюанс: папки УЖЕ созданы(в работе)! Создать в них гит я могу, но не создавать каждому "свежую" папку из главного репозитория(clone)... Можно/тяжело ли "объединить в общую сеть" разные репозитории?
0
|
|
| 14.08.2018, 23:56 | |
|
Ответы с готовыми решениями:
12
Механизм работы git merge Почему git add . и git add * это плохо? И как тогда быть?
|
|
|
|
| 15.08.2018, 01:32 | |
|
1
|
|
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
||
| 15.08.2018, 07:32 [ТС] | ||
|
0
|
||
|
|
|
| 15.08.2018, 07:38 | |
|
Если вам версии файлов не нужны, то git не нужен.
Вам нужно определить факт изменения файла на ПК? Или факт появления отличия между файлом на ПК и его копией на сервере? Или содержимое файла у всех должно быть одинаковым и отличие надо обнаружить? Что за файл вообще?
0
|
|
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
|||||||||
| 15.08.2018, 10:43 [ТС] | |||||||||
|
p.s. В среднем каждый 6-12 месяцев ищу (>5 лет) готовое решение по этой теме здесь и на других форумах... похоже его не существует... А теперь "поджимает". ЗАДАЧА: Десяток-два модулей "частых функций" или "мини-фреймворки" на 3-5 файлов. Например модуль работы с рандомом:
После безуспешных поисков готового git/svn решения собрал "костыль" в 1С7.7 за пару часов (за годы работы развил в целый "комбаин") - база(таблица) проектов(больше 10), база таких модулей(намного больше 10), база модулей проекта("соответствия", с автоматическим поиском/заполнением по папке проекта), отчеты, поиск "измененных", механизм простой замены(с сохранением до 3х старых копий), механизм построчного сравнения/исправления (подключена внешняя утилита из TotalCommander'a). При переносе проекта лишь в таблице прописывал новый путь. Сравнение шло по "старшенству" файлов (дата изменения) - красиво подкрашивалось в отчете и предлагало оптимальные пути по обновлению и инструменты решения конфликтов. Сейчас (через месяц-два-три) часть проектов надо вынести на другие компы, включая не виндовые и хочу переписать на нечто мультиплатформенное и опенсорсное. С 1С7.7(удобное, но платное и только-виндовое) на node(ядро)+web(общий интерфейс, отчеты) + nwjs(локальный интерфейс в tray и "следилка") + git(сравнение, архивы, "транспорт" через сеть). Почему бы не подключить git для хранения ПОЛНОЙ истории версий вместо последних 3х (my.js~1, my.js~2, my.js~3)... За последние >5 лет необходимости "поднять" ранние версии не было(а если надо, то либо в гите каждого "основного" проекта сохранялась, либо в архивных копиях 7zip), но было бы круто изучить/просмотреть/визуализировать(gource) историю каждого такого "универсального модуля". Думал о git-"модулях", но все эти "универсальные" модули скинуты в одну общую папку(от 1 до 30 на проект), а не каждый в своей папке и подключение/обновление сложное. Знаю (проверил, не сложно) что гит можно "натравить" на любой файл закинув .git и рабочий файл в разные папки... но сначала хочу "выработать методику" простой замены (раньше это делал в 1-5 кнопок удобного интерфейса без строчки в консоли). Хочу сделать ТО-ЖЕ но на методиках гита... или прийдется писать "межкомпьютерный" модуль поиска отличий через md5 и синхронизации... Естественно все должно работать в интерфейсе "обновляльщика", а не в консольных командах - поэтому хотелось бы нодой получать "результат выполнения" команд гита и парсить их, а не "вычитывать" консольный отчет на команду гита на 2-3 страницы/экрана в поиске "отличий не обнаружено". ...готов выслушать ЛЮБЫЕ советы!
0
|
|||||||||
|
|
||
| 15.08.2018, 10:54 | ||
--git-dir.Если хотите git, можно так:
1
|
||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
||
| 15.08.2018, 18:51 [ТС] | ||
|
У меня мало опыта с ГИТом (особенно на несколько разработчиков). Поэтому мне тонкости приходится "с нуля" изучать и тестировать... Главное что беспокоит: 1) Папки с файлами УЖЕ есть! Уже раскиданы по винчестерАм. Хочу "провернуть" простой набор команд и "включить их в систему" гит-репозиториев. Пробую БАТниками подобрать оптимальный набор алгоритмов для создания и связывания репозиториев (потом перенесу их в ноду). Пробовал создать в test1/my.js и в test2/my.js 2 репозитория и их "связать" - не получилось! Это "руки кривые" и надо копать дальше или это не предусмотрено ГИТом и надо все ветки от "единого предка" делать?Или изначально прийдется сравнивать/выравнивать вручную, а потом "пересоздавать" в папках методом clone? Изначально задумка была такой: Исходники: test1/my.js test2/my.js Создаю: (git init c кучей параметров) my_git_1/test1/.git my_git_1/test2/.git одного из них назначаю "главным", остальные к нему "подчиненные" потом провожу "первичную синхронизацию" и выравниваю версии commit'ов - чтобы у всех последняя была. потом пишу батники для разных методик синхронизации... и алгоритмы решения конфликтов... 2) еще не могу придумать, нужно ли в моем случае создавать "ветки"? или все могут работать в master? Проектов может быть сотни (некоторые создаю только для отладки/тестирования подобных модулей, но остальные "вспомогательные" модули надо держать актуальными) и без "менеджера веток" я запутаюсь... Если честно, хотелось бы обойтись одной веткой... конфликты возникают крайне редко! из 20 проектов обычно 1меняет, реже 2...
0
|
||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
|
| 17.08.2018, 18:07 [ТС] | |
|
вроде разобрался с основами...
..."кривые руки" были! 2 независимо-созданных репа можно "сливать" в один общий. И ветки плодить не обязательно - вполне все можно делать в master ("не по феншую", но можно). Последний вопрос: Кому-нибудь из ВАС подобная система интересна? Могу попробовать (не сразу) сделать этот проект опенсорсным и выложить ни гитхаб, но за последние 3-5 лет не встречал особого энтузиазма у окружающих (ответы типа "меня и обычная ГИТ вполне устраивает"). Суть системы - поддержка между разными независимыми проектами "одинаковости" единичных/"именных" файлов - одинаковых мини-библиотек, батников(bat, sh), настроек (ini, inf, "одинаковый .gitignore для всех моих ноде проектов"), файлов лицензий, файлов отвечающих за "любимый дизайн"(xml в андроиде, png, css, scss - например либа создания закругленных уголков в одну команду). А так-же ведение реестра проектов (можно будет коментарий задать - когда мини-проектов уже больше 30-50 я не могу вспомнить ни когда, ни кому подобное делал, ни название "той папки").
0
|
|
| 17.08.2018, 20:10 | |
|
0
|
|
| 17.08.2018, 21:24 [ТС] | ||
|
Не по теме:
Я уже приводил выше - модуль Rnd c десятком полезных утилит... неужели если Вам надо потестить программу на случаных параметрах вы каждый раз с нуля ее пишете или "выдираете" из одного из прошлых самых удачных проектов? Я с зимы серьезно взялся за Ноду и у меня уже около 60 мелких проектов для "отладки запчастей". И больше 80 таких мелких файлов в которых надо отслеживать "последнюю самую надежную версию"... А за 10 лет подобных файлов-микрофреймворков набралось больше 500 (и Делфи, и РНР, и Лазарус, и С++, и Андроид, и js/node, и scss). Как же остальные работают???
0
|
||
| 17.08.2018, 21:26 | |
|
0
|
|
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
||
| 17.08.2018, 23:19 [ТС] | ||
|
Не по теме:
Я тоже пишу свои юнит-тесты, и у них по любому есть некая "привычная схема" разработанная МНОЙ под МОИ программы... вырабатывате некий внутри-корпоративный стандарт. А значит появляются некие алгоритмы свойственные всем проектам одной корпорации, которые можно вынести во внешние модули... но подобных 50 модулей на проект - нагрузка на сборщик/компилятор. Сейчас пишу (основной проект) простенький телеграм-бот. В нем 43 таких файла (Rnd, Log, Str, Timers, Rep, ...), которые повторяются между разными проектами и не имеют отношения к телеграмму или к ботам... 3 проекта работают с одной общей базой и должны быть уверены что известная им "структура таблиц" является "самой последней/актуальной" = либо ручками править 3 структуры (ОРМ), либо перекидывать модуль между проектами, либо написать "следилку". Жаль!
0
|
||
| 17.08.2018, 23:23 | ||
|
Не по теме:
К тому времени, как возникнет новый проект, проходит достаточно много времени. Прежний код уже видится полнейшим говнокодом. Но поправить его в старом проекте некогда, а в новый проект тащить - размножать говнокод.
0
|
||
| 17.08.2018, 23:23 | |
|
Помогаю со студенческими работами здесь
13
Как обновить список репозиториев? Как установить opera в kubuntu из репозиториев?
Как установить tomcat из исходников или репозиториев?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc
О Господи, Вечный, Ты . . .
Я помоги, Бесконечный. . .
Я прошу Ты. . .
Я погибаю, спаси. . .
Я прошу Тебя Вечный. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|