![]() |
|
![]() ![]() ![]() |
|
sblon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 10.11.2012 Репутация: нет Всего: нет |
В команде есть отдел, где у ребят соглашение: сначала налаживать lock на файл а потом его редактировать, и при коммите лок снимается. Это они делают во избежания того чтобы несколько людей изменяли один файл (там у них вполне обоснованный такой use case).
Кто знает возможно ли сделать следующее: при коммите файла проверять, наложил ли данный пользователь lock или нет, и если у него нет лока на этот файл, то отменять коммит? Предпочтительно в Mercurial. Ну это конечко скорее всего хуками делается, но с ними не приходиось работать и всех их возможностей не знаю. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
похоже, что нет
с другой стороны, подобные локи все равно автоматически бы не подтягивались — только после pull'a хуками, если извернуться, можно сделать так, что при коммите делать pull preview. И в случае, если в пулле идет файл "имя лочимого файла + .lock", то при наличии этого файла в коммите фейлить коммит. но все равно, это обнаружится только в момент коммита. а, значит, кому-то придется переделывать заново работу. Мне кажется, можно просто процесс перестроить. Если это бинарник, и мердж его штатными средствами, ну, совсем-совсем, никак не возможен, то рассылать сообщение. мол, собираюсь работать над тем-то, не трожьте пока что. Если этот бинарник имеет некую структуру, или же это не бинарник вовсе, но штатный мердж путается из-за сложной и нетипичной структуры текста, то вот еще решение: разбить эту структуру на кучу файлов, которые будут объединяться в процессе билда на CI. В таком случае, частота конфликтов снизится и резолвиться они смогут в автоматическом режиме. Собственно, именно потому, что так проще резолвить, у нас в репозиториях валятеся не один архив с исходниками внутри, а куча отдельных файлов ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
в сводном списке систем контроля версий обрати внимание на столбец "Concurrency model"
И у Git'a, и у Mercurial'a там указано "Merge", что говорит об отсутствии штатных средств лока файлов. |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
какой такой "обоснованный" ? немного недопонимаю основания.... Добавлено через 1 минуту и 50 секунд неужели не пользуетесь mq ? -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
||||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
mercurial queue? ну, положим, в отличие от Гита, не будет привязки к номеру строки. и что? пока один работал над методом, другой отрефакторил весь класс и целевой метод вообще был разбит на два и переименован. как тут поможет поиск контекста? боюсь, в подобном случае, даже лучше, если автопатчинг не пройдет — а то ищи потом логическую ошибку.
|
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
skyboy,
давай сосредоточимся на важном: важно не ответить на вопрос "возможно ли?", а понять нужно ли спрашивать этот вопрос изначально (т.е. понять проблему) факт жизни: когда над кодом в системе ведения версий работает более чем 0 людей - возникают "конфликты" - ситуации, в которых нужно человеческое вмешательство. Ранее в централизованных системах без возможности коммитить локально и мержить локально, нужен был механизм оповещения (locking). этот механизм не решал конфликты. он позволял знать, что конфликты будут, и напр. предлагал приостановить работу (т.е. коммиты!) пока замОк не снят. но сама проблема не решалась: в данный файл мог писАть 1 разработчик, пока не снимет замок. остальные куковали. в распределенных системах эта проблема решается более удобным и отточенным механизмом слития. а в git/hg есть возможность вообще избегать слития: можно импортировать свои локальные csы в mq (qimport), тянуть новые изменения (pull -u), а потом одевать свои патчики на обновленное дерево (qpush, qpush, qpush => qfinish) во первых такой подход сохраняет историю чистой от ненужных "слитий многоголовых драконов" (прямой линией) во-вторых нередко это делать проще чем мержить. в-третьих, свои несколько патчей можно вообще "складывать" (qfold) в 1, тогда твой локальный дневник (и общий) имеет меньше коммитов. Это сообщение отредактировал(а) bilbobagginz - 15.11.2012, 23:59 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
bilbobagginz, искренне не понял посыла.
да, так можно. да, я и сам так делал. да, без lock'a в данном случае можно обойтись. |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
skyboy,
посыл не был кратко описан. а зря, ты прав. Вот он: Обычно в инструменте, которым пользуются миллионы людей с неодинаковыми требованиями, предусмотрено много чего. Поэтому, если тебе не хватает какого-то механизма, для достижения которого надо работать (дописывать функционал), и без которого твой рабочий процесс - нарушается, то скорее всего - твой рабочий процесс не доработан или не подходит для работы с этим конкретным инструментом. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
||||
|
||||
![]() ![]() ![]() |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание на то, что новые темы, касающиеся новых вопросов, создаются кнопкой "Новая тема", а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих темах, будут удалены. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, arilou. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | УП: Инструменты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |