контроль версий - PullRequest
       13

контроль версий

1 голос
/ 29 января 2011

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

В проекте, над которым я работаю, около 10 человек, и каждый из них будет выполнять какую-то «работу» в проекте.

  • Мы делимся 20 модельными файлами (текстовыми файлами)
  • Когда люди «работают», им приходится напрямую переходить к файлам модели и добавлять / удалять / редактировать некоторые строки в 20 текстовых файлах выше.

Предположим, что:

  • A выполненная работа №. 1, 4, 6 и 10.
  • B выполненная работа №. 2, 3, 7 и 9.
  • ...

A реализовано (4) до B реализовано (7). В файле X некоторые значения / строки, измененные (4), переопределяются (7).

Позже, когда мы запустим оценку энергосбережения и выясним, что (4) на самом деле вообще не экономит энергию, мы решили убрать (4).

Таким образом, вопрос в том, что если у нас есть какой-либо элемент управления версиями, который может вывести (4) (реализуется A) БЕЗ касания любых переопределенных значений / строк, созданных (7) (реализовано B).
Другими словами, я хочу удалить все изменения, сделанные А ТОЛЬКО для номера работы (4). Работы 1, 6, 10, выполненные А., все еще находятся в файлах модели.

Сейчас мы используем RCS ... но я не знаю, может ли RCS это сделать и как?
Я рассматриваю GIT и SVN. Я думаю, что SVN более уместен, так как все данные в проекте помещены в 1 место (1 папка). Наш сервер - Linux Red Hat.

Если вы испытали это, пожалуйста, поделитесь.

Извините еще раз и спасибо за ваше время.

Ответы [ 3 ]

2 голосов
/ 29 января 2011

Для конфигурации лучше использовать версию:

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

Таким образом:

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

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


Тип выборочного слияния, который вы хотите, - это «отрицательное слияние» (когда вы отменяете некоторые изменения, а не другие: также называется вычитающее слияние )

Git обрабатывает это без проблем через "rebase --interactive" , где вы воспроизводите коммиты (вы даже можете изменить / изменить один из коммитов, которые воспроизводились).
У вас также будет возможность git revert , если вы не хотите переписывать историю прошлых коммитов.

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

0 голосов
/ 29 января 2011

Чтобы удалить версию с SVN (я предполагаю, что это будет похоже на git), вы используете следующую рабочую строку в вашей рабочей копии:

svn merge -c -4 .

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

0 голосов
/ 29 января 2011

в целом подход при использовании контроля версий таков:

  • у вас транк с стабильной версией кода
  • у вас есть проблема -> вы создаете ветку из своего ствола
  • пока вы исправляете проблему, вы обновляете изменения из ствола в вашу ветку, чтобы оставаться как можно ближе к стабильной версии -> таким образом вы сразу заметите, что изменение в стабильной версии не работает с вашим кодом;)
  • как только проблема решена / проверена (!), Вы сливаете ветвь в ствол

Примечание:

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