Что хорошего в Git?

Начнем с оператора косвенности *:

6.5.3.2 p4: Оператор унарного * обозначает косвенность. Если операнд указывает на функцию, результат будет обозначать функцию; если он указывает на объект, результатом будет lvalue, обозначающий объект. Если операнд имеет тип «указатель на тип», результат имеет тип «тип». Если для указателя присвоено недопустимое значение, поведение унарного * оператора не определено. 102)

* E, где E - нулевой указатель, является неопределенным поведением.

Существует сноска, которая гласит:

< blockquote>

102) Таким образом, &*E эквивалентно E (даже если E - нулевой указатель) и & amp; (E1 [E2]) - ((E1) + (E2 )). Всегда верно, что если E является обозначением функции или значением l, которое является допустимым операндом унарного & amp; оператор, * & amp; E - обозначение функции или lvalue, равное E. Если * P - это lvalue, а T - имя типа указателя объекта, * (T) P - это значение l, которое имеет тип, совместимый с тем, что где T указывает.

Это означает, что & amp; * E, где E является NULL, определяется, но вопрос в том, верно ли то же самое для & amp; (* E) .m, где E - нулевой указатель, а его тип - это структура, которая имеет член m?

. Стандарт C не определяет это поведение.

Если бы оно было определено, возникли новые проблемы , один из которых приведен ниже. C Standard корректен, чтобы сохранить его неопределенным и предоставляет макрос offset, который обрабатывает проблему внутренне.

6.3.2.3 Указатели

  1. Целочисленное постоянное выражение с значение 0 или такое выражение, отлитое от типа void *, называется константой нулевого указателя. 66) Если константа нулевого указателя преобразуется в тип указателя, результирующий указатель, называемый нулевым указателем, гарантированно сравнится неравномерно с указателем на любой объект или функцию.

Это означает, что целочисленное постоянное выражение со значением 0 преобразуется в константу нулевого указателя.

Но значение константы нулевого указателя не определено как 0. Значение определено реализацией.

7.19 Общие определения

  1. Макросы имеют значение NULL, которое расширяется до константы нулевого указателя, определяемой реализацией

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

. Другая проблема заключается в том, как вы оцениваете & amp; (* E) .m? Применяются ли скобки и сначала оцениваются *. Решение этой проблемы решает эту проблему.

32
задан Rex M 26 June 2009 в 04:44
поделиться

8 ответов

Мерзавец глубок и может быть хитрым сначала. Я сказал бы, что это определенно не для всех, особенно если у Вас есть разработчики или другие нетехнические люди, бывшие должные зарегистрироваться и. На нашем текущем проекте мы выполняем svn бэкэнд, и три разработчика приняли решение использовать мерзавца, в то время как два продолжают использовать svn и совершенно довольны и продуктивны.

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

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

Из всех ресурсов там, Scott Chacon Получение Мерзавца - то, что продало меня на преимуществах мерзавца и дало мне мотивацию для проталкивания крутой части кривой обучения.

8
ответ дан Abie 26 June 2009 в 04:44
поделиться
  • 1
    Действительно ли это поведение четко определено в стандарте? – gnud 13 October 2009 в 19:03

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

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

я рекомендовал бы сначала стать довольным им как клиент, говоря github или подобный инструмент.

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

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

4
ответ дан scottynomad 26 June 2009 в 04:44
поделиться

Я только что начал использовать мерзавца месяц назад, и любите его. Его быстрое и простое в использовании и для команд и для людей. Не очень трудно учиться, и я не должен был осваивать новые технические навыки для использования мерзавца. Я знаю, что это поддерживает миграцию от CVS/SVN. Большая часть - то, что можно все еще поддержать рабочий процесс стиля CVS/SVN, должен Вы хотеть к.

я предлагаю смотреть на мерзавца Wiki: http://git.or.cz/gitwiki и официальный сайт: http://git-scm.com/

я надеюсь, что это помогает, и Вы любите использовать мерзавца.

3
ответ дан batbrat 26 June 2009 в 04:44
поделиться
  • 1
    I' m получение ошибки тип или пространство имен называют ' State' не мог быть найден (Вы пропускаете директиву использования или ссылку на сборку?) на строке: поток var = новый поток (s = > ((Состояние) s).Result = Поток. CurrentThread. CurrentCulture); проблема находится на ссылке состояния. Какая-либо идея о том, как решить это? Спасибо – Pascal 5 May 2010 в 22:10

На вершине моей головы:

  • его распределенный аспект (у каждого разработчика есть копия репозитория)
  • способность обработать сложные слияния очень быстро
  • возможность переключиться от задачи до задачи, отложить его работу, возвращается к нему...
  • дешевое ветвление (мгновенный переключатель: это просто пишет несколько битов в файле! И это не полагает, что ответвление как каталог как SVN делает)

, основная трудность состоит в том, чтобы установить рабочий процесс между другим repos, не повреждая историю того, что было уже опубликовано (продвинутый общественности repo).

alt text

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

19
ответ дан Community 26 June 2009 в 04:44
поделиться
  • 1
    Я перепроверил, и Вы правы в этом, стандарт действительно определяет специализацию char_traits<char> и со стандартной специализацией, присвоение, сравнения и упорядочивание определяются как эквивалент для встроенного символьного типа. – David Rodríguez - dribeas 13 October 2009 в 19:25

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

Используя мерзавца для Вашего собственного управления версиями локали (для того же вида вещей Вы использовали бы RCS), я спорил бы легче, чем использование RCS.

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

Лично я использовал его главным образом для персональных проектов и для того, чтобы иметь локальное управление версиями на работе. Мы используем по необходимости на работе, и они довольно строги о количестве ответвлений, которые мы можем сделать, в каком мы можем зарегистрироваться. Мы добрались для регистрации в законченных, способных компиляцией, тестируемых блоках кода.

Часто я работал над большими заданиями рефакторинга, и меньшее выполнение закрепляет на стороне одновременно. Я нашел это очень трудным манипулировать по необходимости. Но с мерзавцем я смог иметь загрузки маленьких ответвлений локали для различных экспериментов, рефакторинга и устранения ошибки, которое я делал.

Так для меня привлекательные для покупателя качества мерзавца:

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

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

2
ответ дан Erik Engheim 26 June 2009 в 04:44
поделиться
  • 1
    Спасибо Darin... работал как очарование теперь! – Pascal 6 May 2010 в 09:01

Github! На самом деле, я научился ценить git только с помощью github.

5
ответ дан 27 November 2019 в 20:59
поделиться

Я понимаю, что это вопрос о Git, но OP должен понимать, что многие из преимуществ применимы ко всем основным распределенным системам управления версиями. У Git, Mercurial и Bazaar есть свои сильные и слабые стороны, поэтому вам следует изучить все три и решить, какой из них лучше всего подходит для вашего стиля работы и ваших проектов.

3
ответ дан 27 November 2019 в 20:59
поделиться

История GIT - классика в истории FOSS. См. историю Git в Википедии. Теги для этой истории: BitKeeper, Эндрю Триджелл , Torvalds, Git, самообслуживание за 2 дня .

Ну, это не ответ, кто-то с отношением FOSS / Hacker наверняка с удовольствием прочитает это.

2
ответ дан 27 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

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