Почему я не хотел бы центральный репозиторий в управлении версиями? SVN по сравнению с вопросом о Мерзавце [дубликат]

Я, в основном, пользователь R и начал играть на python, но возможное решение может заключаться в том, чтобы просто написать свой код на python в Rmarkdown. Вы можете написать свой код python и r здесь взаимозаменяемо - вот отличный ресурс для начала работы https://cran.r-project.org/web/packages/reticulate/vignettes/r_markdown.html [ 114]

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

---
title: "test"
output: html_document
---

```{r setup, include=FALSE}

knitr::opts_chunk$set(echo = TRUE)
#engine to run python
library(reticulate)

```



```{python}
#python code R knows this is python code because you specified 
# this above  "```{python}"

import pandas

df = pandas.DataFrame({'foo':[1,2,3], 'bar':['one', 'two', 'three'], 'baz':['apple', 'banana', 'strawberry']})

print(df)

```



```{r}
#r code 
#refer to get python objects in R code you have to type py$objectname
df2 <- py$df
class(df2)
#data.frame - python equivalent to pandas.DataFrame
```

12
задан Community 23 May 2017 в 12:13
поделиться

9 ответов

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

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

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

Я бы предложил попробовать Git себя для небольшого (или притворного) проекта. Как только вы увидите, как это работает, вы начнете видеть возможности.

Мое предложение было бы попробовать Git себя для небольшого (или притворного) проекта. Как только вы увидите, как это работает, вы начнете видеть возможности.

Мое предложение было бы попробовать Git себя для небольшого (или притворного) проекта. Как только вы увидите, как это работает, вы начнете видеть возможности.

8
ответ дан 2 December 2019 в 18:22
поделиться

Суть DVCS не в том, чтобы «избегать центрального хранилища». Большинство проектов на основе DVCS, которые я вижу, имеют какое-то понятие общего HEAD - люди помещают исправления в этот HEAD, и именно отсюда выходят релизы.

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

  1. Удобство. Если я добавлю новую функцию, я смогу зафиксировать ее - и получить хорошую запись рабочей версии кода - без необходимости иметь под рукой сеть или необходимость передавать свой возможно сломанный код в руки других людей.
  2. Контроль над параллельным развитием. Абсолютно независимо, я могу работать с одним набором функций и использовать контроль ревизий всеми способами, которые, как мы знаем, улучшают разработку, в то время как кто-то другой может вносить исправления в один и тот же код (чтобы они могли использовать преимущества контроля ревизий), не мешая Моя разработка
  3. Ветвление, слияние и тому подобное. DVCS имеют тенденцию иметь гораздо лучшую поддержку - поскольку это - неотъемлемая идея распределенной системы - для ветвления. Если мне не нравится то, что делает руководитель проекта, для меня ветвь проекта тривиальна . Я тяну HEAD, начинаю совершать репо и могу отправить это любому, кто хочет мою ветку. Точно так же в контексте # 2 гораздо проще иметь дело с несколькими наборами патчей от разных людей.
5
ответ дан 2 December 2019 в 18:22
поделиться

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

1
ответ дан 2 December 2019 в 18:22
поделиться

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

Распространение - это просто круто, поскольку я могу иметь свои коммиты в моих форках проектов с открытым исходным кодом.

И github - это круто. В самом деле. Потрясающе.

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

Смехотворно быстро и потому, что он дает вам больше (опасно) власти в отношении того, как иметь дело с коммитами, и имеет довольно приличное слияние.

Распределение - это круто, поскольку у меня могут быть свои коммиты в моих форках проектов с открытым исходным кодом. ,

И github - это круто. В самом деле. Потрясающе.

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

Смехотворно быстро и потому, что он дает вам больше (опасно) власти в отношении того, как иметь дело с коммитами, и имеет довольно приличное слияние.

Распределение - это круто, поскольку у меня могут быть свои коммиты в моих форках проектов с открытым исходным кодом. ,

И github - это круто. В самом деле. Потрясающе.

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

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

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

2
ответ дан 2 December 2019 в 18:22
поделиться

Я использую Bazaar, так что это может быть немного другой ответ, чем дал бы пользователь Git, но:

Только то, что VCS децентрализована, не предотвращает вас от наличия единственной, авторитетной ветви. Все ветви одинаковы, но вы все равно должны иметь «официальный ствол» для пометки релизов. Например, хотя они представляют собой тысячи ветвей кода Linux, ветвь Линуса - это то, что выпускается как «официальная» версия.

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

0
ответ дан 2 December 2019 в 18:22
поделиться

Я вижу два основных преимущества для Git перед SVN:

  1. Нет единой точки отказа. GitHub сегодня вышел из строя, и многие люди жаловались, но они могли продолжать работать со своими командами, потому что каждая извлеченная копия - это полный репозиторий, который можно разложить, объединить и т. Д.

  2. Устраняет политические проблемы. По мере роста организаций увеличивается количество внутренних проектов и, следовательно, количество зависимостей. Git позволяет каждому подразделению «владеть» копиями каждого проекта, что может уменьшить головную боль при создании новых версий. Это также означает, что команда может начать свою собственную ветку, сделать улучшения, а затем предложите ответвление к основной версии проекта - все это без головной боли, связанной с получением разрешения в системах другой группы.

1
ответ дан 2 December 2019 в 18:22
поделиться

Вы все еще можете иметь централизованное хранилище. Разница в том, что у вас есть полностью работающий сервер репозитория на вашем локальном компьютере, который позволяет вам работать полностью отключенным, но при этом иметь возможность отслеживать изменения и регистрироваться. Для того, чтобы поделиться с другими людьми их потребностями быть где-то центральным репозиторием что изменения могут быть объединены с. Однако это не обязательно.

1
ответ дан 2 December 2019 в 18:22
поделиться

Наличие децентрализованного репозитория означает, что вы можете выполнять фиксацию в разных местах.

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

Для больших проектов с большим количеством пользователей это отличная возможность .

С SVN у вас есть один главный серверный репозиторий. Если вы хотите иметь инкрементные коммиты и фиксировать их только в основной разработке, вы создаете ветку и отрабатываете ее. Однако для фиксации изменений вам все еще требуется подключение к удаленному репозиторию.

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

1
ответ дан 2 December 2019 в 18:22
поделиться

У вас очень часто есть центральное хранилище «благословенного» состояния вашего кода с помощью Git. Просто вы можете настроить гораздо больше макетов репозитория / участника, чем с SVN.

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

Проще говоря: все, что может сделать SVN, Git может, а потом и некоторые. (Дайте или возьмите некоторые детали: Git, например, не имеет svn: externals или блокировки файлов.)

Я использую IntelliJ IDEA, и его поддержка Git является первоклассной. Кроме того, в Git уже встроены довольно мощные интерактивные инструменты, как графические, так и командные.

1
ответ дан 2 December 2019 в 18:22
поделиться