Блокировка управления версиями: жюри все еще?

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

Вам нужно, по крайней мере, одно из них быть float или double.

Если вы входите значения в исходном коде, такие как ваш вопрос, вы можете сделать 1.0/3; 1.0 является двойным.

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

int x = ...;
int y = ...;
double value = ((double) x) / y;
21
задан T.E.D. 14 January 2009 в 23:30
поделиться

10 ответов

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

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

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

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

Это не задание системы управления версиями для помощи с коммуникацией.

17
ответ дан Stefan 29 November 2019 в 06:49
поделиться

Мне нравится иметь опция к монопольной блокировке, некоторый файл [s].

, Имеющий монопольную блокировку, необходим, например, для двоичных файлов.

Это также полунеобходимо для некоторых сгенерированных машиной недвоичных файлов (например, для файлов проекта Visual Studio, которые не 'объединяются' вообще хорошо, если когда-нибудь существует два параллельных изменения, которые будут объединены).

8
ответ дан ChrisW 29 November 2019 в 06:49
поделиться

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

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

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

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

6
ответ дан Darcy Casselman 29 November 2019 в 06:49
поделиться

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

Одной из тех больших проблем является плохая организация кода. На одном из моих консультационных концертов для главных телекоммуникаций, восемь из тридцати членов команды постоянно работали над тем же исходным файлом (форма "бога" VB.NET). Мы ожидали бы кого-то еще, чтобы закончить их работу и выпустить монопольную блокировку (VSS), тогда следующий человек в иерархии сразу заблокирует файл для применения их изменений. Это взяло навсегда, потому что они должны были повторно интегрировать всю свою работу в новый код, который они видели только что тогда. Так как я был новым парнем, я был в нижней части иерархии, и мне НИКОГДА не разрешали зарегистрироваться в моих изменениях кода. Я в конечном счете перешел к менеджеру проектов / директор и предложил, чтобы для меня определили задачу с другой частью функциональности приложения. Этот проект в конечном счете самоликвидировался, но большинство из нас уехало, поскольку мы поняли ту неизбежность. Обратите внимание, что использование интеграции VSS было ключевой ролью этого отказа также, так как это вызывает ранние приобретения той драгоценной блокировки файла.

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

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

6
ответ дан Rob Williams 29 November 2019 в 06:49
поделиться

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

2
ответ дан Sydius 29 November 2019 в 06:49
поделиться

Вот мои 0,02$.

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

Допустимые случаи для блокировок все еще существуют.

  • Графические изменения. 99% времени Вы не можете объединить 2 работы народов над той же диаграммой.
  • Двоичные обновления.
  • Иногда код может быть достаточно сложным/простым для выравнивания по ширине только 1 человека, работающего над ним за один раз. В этом случае это - выбор управления проектами использовать функцию.
2
ответ дан T.E.D. 29 November 2019 в 06:49
поделиться

Обращение к Вашим комментариям редактирования.

Даже RCS и SCCS (VCS дедушки для большей части того, что работает на Unix/Linux в эти дни) разрешают параллельный доступ редактирования к файлам, и я не отношусь для разделения ответвлений. С SCCS Вы могли сделать' get -k SCCS/s.filename.c' и получить доступную для редактирования копию файла - и Вы могли использовать опцию (' -p' IIRC) для получения его к стандартному выводу. У Вас могли быть другие люди, делающие то же. Затем когда это пришло время к регистрации, необходимо будет удостовериться, что Вы запустили с правильной версии, или сделайте слияние для контакта с изменениями, так как стартовая версия была собрана, и т.д. И ни одна из этой проверки не была автоматизирована, и конфликты не были обработаны или отмечены автоматически и так далее. Я не утверждал, что это было легко; просто то, что это могло быть сделано. (В соответствии с этой схемой, блокировки были бы только сохранены в течение короткого времени, в то время как регистрация/слияние происходила. У Вас действительно есть блокировки все еще - SCCS требует их, и RCS может быть скомпилирован со строгой требуемой блокировкой - но только на довольно короткое время. Но это - тяжелая работа - никто не сделал это, потому что это - такая тяжелая работа.)

современный дескриптор VCS большинство проблем автоматически, или почти автоматически. Это - их большая сила по сравнению с наследственными системами. И потому что слияние является легким и почти автоматическим, оно позволяет различные стили разработки.

мне все еще нравится блокировать. Основная система работы, которую я использую, является (Рациональная IBM) Атриумами ClearCase; для моей собственной разработки я использую RCS (бросавший SCCS вокруг двухтысячного года). Обе блокировки использования. Но ClearCase имеет хорошие инструменты для того, чтобы сделать слияние, и мы делаем изрядное количество этого, не в последнюю очередь потому что существует по крайней мере 4 строки кода, активные на продукте, я продолжаю работать (4 основных версии, который является). И исправления ошибок в одной версии довольно часто относятся к другим версиям, почти дословно.

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

1
ответ дан Jonathan Leffler 29 November 2019 в 06:49
поделиться

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

4
ответ дан 29 November 2019 в 06:49
поделиться

Интересный вопрос. Для меня проблема не столько в том, блокировать ли, сколько как долго блокировать. В этом магазине я меньшинство, потому что я люблю сливаться. Мне нравится знать, что другие люди сделали с кодом. Итак, что я делаю:

  • Всегда работаю с локальной копией исходного дерева.

  • Часто запускайте Windiff с «официальным» кодом и при необходимости объединяйте изменения в мою локальную копию. Для слияния я использую старый Emacs (Epsilon) и привязываю команду compare-buffers к горячей клавише. Другой ключ говорит: «Сделайте остальную часть этой строки такой же, как в другом файле», потому что многие изменения небольшие.

  • Когда я готов зафиксировать изменения, Windiff сообщает мне, какие файлы мне нужно заблокировать, зарегистрировать и разблокировать. Поэтому я держу их закрытыми как можно меньше времени, например, минут.

Итак, когда Бесстрашный Лидер говорит: «Вы проверили свой код?» ответ: «У меня нет проверенных».

Но, как я уже сказал, я в меньшинстве.

2
ответ дан 29 November 2019 в 06:49
поделиться

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

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

Если у меня есть монопольная блокировка файлов, которые я быть в состоянии зарегистрировать согласованный набор изменений; мне проще это сделать.

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

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

Модель с открытым исходным кодом (множество людей по всему миру совместно работают над разными вещами) способствовала распространению мнения о том, что блокировка — это плохо, но для некоторых команд она действительно работает. Это позволяет избежать реальных проблем.Я не говорю, что эти проблемы нельзя преодолеть, но это требует изменения поведения людей; если вы хотите перейти на неблокирующую модель, вы должны убедить их перейти на способ работы, который может показаться им труднее и может фактически (по их мнению) увеличить риск, вызывающий регрессию.

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

2
ответ дан 29 November 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: