Что входит в систему управления версиями?


Дано: http://developer.android.com/resources/faq/commontasks.html#filelist

  1. каковы наилучшие методы внедрения Ваших проектов в систему управления версиями? Я спрашиваю, потому что если вы просто щелкните правой кнопкой мыши на вашем проекте, выберите команду и т. д. вы в конечном итоге с папками /bin & / gen, .classpath, а также все связанные с Eclipse элементы.
  2. Если я наследую проект с .../ workspace / projectName и др. включено как я могу очистить это, чтобы включить только элементы имеет отношение к вышеупомянутому URL?
4 11

4 ответа:

Я кратко изложил все свои выводы в блоге, который можно найти здесь: http://www.aydabtudev.com/2011/05/what-goes-into-source-control-android.html

Я выполнил следующие команды из папки проекта, чтобы вывести их из системы управления версиями:

svn rm --keep-local .classpath
svn rm --keep-local .project
svn rm --keep-local default.properties
svn rm --keep-local proguard.cfg
svn rm --keep-local bin/
svn rm --keep-local gen/

Затем я выполнил следующую команду, чтобы добавить их в список игнорируемых:

svn pe svn:ignore .

Добавьте каждый пункт выше без соответствующей команды следующим образом:

.classpath
.project
bin/
...

Я последовал за этим с фиксацией и обновление для закрепления моих изменений.

svn commit -q -m "Removing files" .
svn update

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

Если вы используете SVN, вы должны выборочно добавлять файлы / каталоги в свой репозиторий.

Например, со следующей структурой каталогов (быстрый пример с моего диска):

res/
src/
build/
.idea/

Вы не хотите добавить каталог сборки или личные предпочтения для вашей IDE (.idea папки), поэтому вы только выдадите команду: svn add res src

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

Мои извинения, если я упускаю суть вопроса.

Вот некоторые основные моменты:

  • Не храните в системе управления версиями то, что создает ваш исходный код. Например, если вы создаете файл jarfile, не храните его в системе управления версиями.
  • управление версиями предназначено для источника. Если у вас есть релизы, используйте репозиторий релизов, например Artifactory. Не позволяйтеMaven вещи отпугнуть вас. Возможно, вы не используете Maven (сейчас), но инструмент Maven repository имеет стандартный формат и позволяет легко найти ваш выпуск. Artifactory может работать с Ant / Ivy, и с небольшим количеством смазки локтя, вы можете заставить его работать с проектами C и C++ тоже.
  • что подводит меня к следующему утверждению: не храните ваши jarfiles (если вы являетесь проектом Java) в вашем исходном репозитории. Это удобно, но в конечном итоге вы будете ненавидеть себя за это в долгосрочной перспективе. Двоичные файлы занимают много времени для обработки во многих системах управления версиями, и они могут занимать много места. Что еще хуже, так это то, что вы теряете информацию о их. Например, какая версия common-utils.jar проверяется в Subversion, от которой теперь зависит мой проект. Опять же, используйте Artifactory и Ant / Ivy или Maven. Если вы не Java, вы можете использовать wget или curl для извлечения зависимых библиотек из Artifactory. Опять же, не позволяйте всей этой истории с Мэйвеном напугать вас.
  • Если у вас есть проект Java, и вы не используете Maven, настаивайте на том, что код хранится в репозитории с использованием стандартной компоновки Maven. То есть код Java хранится в файлах src/main/java и не Java находятся под src/main/resources. Преимущество заключается в том, что он позволяет легко переходить от проекта к проекту, и новые разработчики могут быстро найти, где что находится. Кроме того, это делает ваши файлы build.xml намного чище. Вы можете использовать любую стандартную компоновку репозитория, но, настаивая на стандарте Maven, вы можете подавить все жалобы. - Эй, я согласен с тобой, но Мэйвен говорит, что ты поместил свой код в этот каталог. Извините, я хотел бы помочь, но у меня связаны руки "
  • Если вы используете Subversion, придерживайтесь Стандарта, trunk, branches, tags стиль и не будьте слишком причудливы. Я сам не на 100% без ума от макета. (Я бы предпочел иметь main под каталогом branches и не trunk), но вы просто запутаете разработчиков и сделаете поддержку более трудной, и все это для очень небольшой выгоды.
  • Убедитесь, что все проекты (если вы используете Ant) имеют стандартные целевые имена. И снова я заимствую соглашение Мэйвена об именах. Убедитесь, что все build.xml используют параметр description в именах целей, и что только внутренние цели не используют description. Таким образом, ant -p работает. Также убедитесь, что все построенные артефакты находятся в каталоге target (опять же, maven's way). Это позволяет легко сделать clean, Если вам нужно только удалить каталог target. Идея clean состоит в том, чтобы восстановить ваш макет в первозданном состоянии оформления заказа. Гораздо проще использовать такой инструмент, как Дженкинс. Кстати, это мне напомнило...
  • используйте инструмент непрерывной сборки, такой какJenkins . Это поможет вам обеспечить соблюдение вашей политики и стандартов. В отличие от многих инструментов, разработчики на самом деле любят Дженкинса. И вы можете добавить такие вещи, как автоматическое тестирование, checkstyle и т. д.

1. Это зависит от вашего рабочего процесса. Если вы ожидаете, что все, кто когда-либо будет работать над вашим проектом, будут использовать eclipse.папка classpath хороша тем, что в ней хранятся все ваши настройки(пути к библиотекам, внешние зависимости..)

Насколько мне известно, subclipse не помещает папку /bin под управление версиями(это, вероятно, произошло из-за странного способа формирования репозитория, описанного в 2.) потому что eclipse может генерировать его на лету, как только он имеет /папка src.

  1. обычно достаточно переместить все в /workspace / projectName и удалить / workspace.