Многие аналитики данных, которых я уважаю, используют контроль версий. Например:
- http://github.com/hadley/
- Смотрите комментарии на http://permut.wordpress.com/2010/04/21/revision-control-statistics-bleg/
Тем не менее, я оцениваю целесообразность внедрения системы контроля версий, такой как git.
Краткий обзор: я социолог, использующий R для анализа данных для научных публикаций. В настоящее время я не делаю R пакетов. Мой код R для проекта обычно включает несколько тысяч строк кода для ввода данных, очистки, манипуляции, анализа и генерации вывода. Публикации обычно пишутся с использованием LaTeX.
Что касается контроля версий, есть много преимуществ, о которых я читал, но они кажутся менее важными для индивидуального аналитика данных.
- Резервное копирование: у меня уже есть резервная система.
- Форкинг и перемотка: я никогда не чувствовал необходимости делать это, но я вижу, как это может быть полезно (например, вы готовите несколько журнальных статей на основе одного и того же набора данных; вы готовите отчет, который обновляется ежемесячно, и т. Д. )
- Совместная работа. Большую часть времени я анализирую данные самостоятельно, поэтому я не получаю преимуществ совместной работы по управлению версиями.
Существует также несколько потенциальных затрат, связанных с внедрением контроля версий:
- Время оценивать и изучать систему контроля версий
- Возможное увеличение сложности по сравнению с моей нынешней системой управления файлами
Однако у меня все еще есть чувство, что я что-то упускаю. Общие руководства по управлению версиями, похоже, больше адресованы ученым, чем аналитикам данных.
Таким образом, конкретно в отношении данных аналитиков при обстоятельствах, аналогичных перечисленным выше:
- Стоит ли контролировать версию?
- Каковы основные плюсы и минусы принятия контроля версий?
- Какова хорошая стратегия для начала работы с контролем версий для анализа данных с помощью R (например, примеры, идеи рабочего процесса, программное обеспечение, ссылки на руководства)?
источник
Ответы:
Я чувствую, что ответ на ваш вопрос - ошеломляющее да - преимущества управления вашими файлами с помощью системы контроля версий намного перевешивают затраты на внедрение такой системы.
Я постараюсь подробно ответить на некоторые из вопросов, которые вы подняли:
Да, и я тоже. Однако есть некоторые вопросы, которые следует рассмотреть относительно целесообразности использования системы резервного копирования общего назначения для адекватного отслеживания важных и активных файлов, относящихся к вашей работе. На стороне производительности:
И, самое главное:
Например, у вас есть Mac и используйте Time Machine для резервного копирования на другой жесткий диск моего компьютера. Time Machine отлично подходит для восстановления нечетного файла или восстановления моей системы, если что-то испортилось. Однако у него просто нет того, что нужно, чтобы доверить мою важную работу:
При резервном копировании Time Machine должна создавать образ всего жесткого диска, что занимает значительное время. Если я продолжу работать, я не гарантирую, что мой файл будет записан в том состоянии, в котором он находился при запуске резервного копирования. Я также могу достичь другой точки, которую я хотел бы сохранить до завершения первого резервного копирования.
Жесткий диск, на котором хранятся мои резервные копии Time Machine, находится на моей машине - это делает мои данные уязвимыми для кражи, пожара и других бедствий.
С системой контроля версий, такой как Git, я могу инициировать резервное копирование определенных файлов, не затрачивая больше усилий, чем запрос сохранения в текстовом редакторе, и файл отображается и сохраняется мгновенно. Кроме того, Git распространяется так, что на каждом компьютере, на котором я работаю, имеется полная копия репозитория.
Это равносильно тому, что моя работа была отражена на четырех разных компьютерах - ничто иное, как стихийное бедствие, не могло уничтожить мои файлы и данные, и в этот момент мне, вероятно, все равно было бы наплевать.
Как солист, я тоже не так уж и много. Однако время, которое я сэкономил, имея возможность перемотки назад, в одиночку окупило мои вложения в изучение системы контроля версий много-много раз. Вы говорите, что никогда не чувствовали необходимости делать это, но действительно ли перемотка какого-либо файла в вашей текущей системе резервного копирования была безболезненным и выполнимым вариантом?
Иногда отчет выглядел лучше 45 минут, час или два дня назад.
Да, но вы изучите инструмент, который может оказаться незаменимым, если вы в конечном итоге будете сотрудничать с другими в проекте.
Не беспокойся об этом. Системы контроля версий похожи на языки программирования - у них есть несколько ключевых понятий, которые необходимо изучить, а остальное - просто синтаксический сахар. По сути, первая система управления версиями, которую вы изучите, потребует больших затрат времени, а переключение на другую - просто изучение того, как новая система выражает ключевые понятия.
Выберите популярную систему и сделайте это!
Есть ли у вас одна папка, скажем,
Projects
которая содержит все папки и файлы, связанные с вашей деятельностью по анализу данных? Если это так, то установка контроля версий на него точно увеличит сложность вашей файловой системы0
. Если ваши проекты разбросаны о вашем Computer- , то вы должны централизовать их перед применением контроля версий , и это в конечном итоге уменьшая сложность управления вашей Files-, поэтому у нас естьDocuments
папка после всех.Да! Он дает вам огромную кнопку отмены и позволяет легко переносить работу с машины на машину, не беспокоясь о таких вещах, как потеря USB-накопителя.
Единственный минус, о котором я могу подумать, - это небольшое увеличение размера файла, но современные системы контроля версий могут делать абсолютно удивительные вещи со сжатием и выборочным сохранением, так что это довольно спорный вопрос.
Держите файлы, которые генерируют данные или отчеты под контролем версий, будьте избирательны. Если вы используете что-то подобное
Sweave
, храните ваши.Rnw
файлы, а не.tex
файлы, которые создаются из них. Сохраняйте необработанные данные, если будет сложно повторно их получить. Если возможно, напишите и сохраните сценарий, который получает ваши данные, и другой, который очищает или изменяет его, а не хранит изменения в необработанных данных.Что касается изучения системы контроля версий, я настоятельно рекомендую Git и это руководство к нему.
На этих сайтах также есть несколько полезных советов и рекомендаций по выполнению определенных действий с Git:
http://www.gitready.com/
http://progit.org/blog.html
источник
Я проработал девять лет в магазине аналитики и представил в этом магазине идею контроля версий для наших аналитических проектов. Очевидно, я большой сторонник контроля версий. Я хотел бы сделать следующие замечания, однако.
источник
Ради полноты я подумал, что предоставлю обновленную информацию о моем внедрении контроля версий.
Я считаю, что контроль версий для индивидуальных проектов анализа данных очень полезен.
Я выбрал git в качестве основного инструмента контроля версий. Сначала я использовал Egit в Eclipse со StatET. Сейчас я обычно использую интерфейс командной строки, хотя интеграция с RStudio довольно хорошая.
Я написал в блоге о своем опыте настройки с контролем версий с точки зрения проектов анализа данных.
Как отмечалось в сообщении, я обнаружил, что принятие контроля версий имеет много вторичных преимуществ в том, как я думаю о проектах анализа данных, включая уточнение:
источник
Я занимаюсь экономическими исследованиями с использованием R и LaTeX и всегда ставлю свою работу под контроль версий. Это как неограниченная отмена. Попробуйте Bazaar, он один из самых простых в освоении и использовании, и если вы работаете в Windows, он имеет графический интерфейс пользователя (TortoiseBZR).
Да, есть дополнительные преимущества для контроля версий при работе с другими, но даже в индивидуальных проектах это имеет большой смысл.
источник
Прямо сейчас вы, вероятно, думаете о своей работе как о разработке кода, который будет делать то, что вы от него хотите. После того, как вы перейдете к использованию системы контроля версий, вы будете думать о своей работе как о том, что записываете свое наследие в хранилище и вносите в него значительные изменения. Это намного лучше.
источник
Я бы по-прежнему рекомендовал контроль версий для такого сольного актера, как вы, потому что иметь страховочную сетку, чтобы ловить ошибки, было бы здорово.
Я работал сольным Java-разработчиком и до сих пор использую систему контроля версий. Если я проверяю вещи постоянно, я не могу потерять больше часа работы, если что-то пойдет не так. Я могу экспериментировать и рефакторинг, не беспокоясь, потому что если все пойдет не так, я всегда могу вернуться к своей последней рабочей версии.
Если это так, я бы порекомендовал использовать систему контроля версий. Это не сложно учиться.
источник
Вы должны использовать программное обеспечение для контроля версий, иначе ваш анализ не будет полностью воспроизводимым.
Если вы хотите опубликовать свои результаты где-нибудь, вы всегда сможете восстановить состояние ваших сценариев в тот момент, когда вы их создали. Допустим, один из рецензентов обнаружил ошибку в одном из ваших сценариев: как бы вы узнали, какие результаты достигнуты, а какие нет?
В этом смысле системы резервного копирования недостаточно, поскольку, вероятно, она выполняется только один раз в день, и она не применяет метки к различным резервным копиям, поэтому вы не знаете, какие версии соответствуют каким результатам. А изучение vcs проще, чем вы думаете, если вы уже знаете, как добавить файл и как внести изменения, этого уже достаточно.
источник
большое ДА.
плюсы: вы можете отслеживать, что вы сделали раньше. Особенно полезно для латекса, так как вам может понадобиться старый абзац, который вы удалили! Когда ваш компьютер выходит из строя или вы работаете над новым, ваши данные возвращаются на лету.
минусы: вам нужно сделать некоторые настройки.
Просто начни им пользоваться. Я использую черепаху SVN на окнах в качестве инструмента клиента, и в моем отделе есть сервер svn, я помещаю весь свой код и данные (да, вы также помещаете туда свои данные!).
источник
Сначала сделайте шаг назад и узнайте преимущества написания пакетов R! Вы говорите, что у вас есть проекты с несколькими тысячами строк кода, но они не структурированы и не документированы, как код пакета? Вы добиваетесь больших успехов, следуя идеалам пакета, включая документацию для каждой функции, тесты для многих обычных трудно обнаруживаемых ошибок, возможность написания собственных наборов тестов и т. Д. И т. Д.
Если у вас нет дисциплины для создания пакета, то я не уверен, что у вас есть дисциплина для правильного контроля версий.
источник
Я согласен с вышеизложенным мнением и скажу, что да, контроль версий полезен.
Преимущества;
Что касается наборов инструментов, я использую Git вместе со StatEt и Eclipse, который работает хорошо, хотя вам, конечно, не обязательно использовать Eclipse. Существует несколько плагинов Git для Eclipse , но я обычно использую параметры командной строки.
источник
Контроль версий для сольной разработки (любого рода) действительно интересен для:
Если вы не видите себя выполняющим одну из этих двух основных функций контроля версий, вам может понадобиться простой инструмент резервного копирования.
Если вам нужны эти функции, то вы также получите резервную копию (
git bundle
например, с)источник
Я также занимаюсь созданием сценариев в одиночку и обнаруживаю, что это упрощает, а не усложняет. Резервное копирование интегрировано в рабочий процесс кодирования и не требует отдельного набора процедур файловой системы. Время, необходимое для изучения основ любой системы контроля версий, определенно будет хорошо потрачено.
источник
Dropbox имеет систему контроля версий «ppor man's», которая поможет вам без особых усилий и множества дополнительных преимуществ.
источник