Хранение кода в нескольких серверах SVN

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

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

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

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

svnsync похож, возможно, на хороший вариант. Кто-либо попробовал это? У кого-либо есть другие предложения?

5
задан James Maroney 12 January 2010 в 16:38
поделиться

6 ответов

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

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

1
ответ дан 15 December 2019 в 01:02
поделиться

Во-первых, я бы настроил вашу оболочку/среду, чтобы дать вам основной дамп. В bash:

ulimit -c unlimited

После получения дампа ядра можно использовать gdb для проверки трассировки стека:

gdb /path/to/app /path/to/core/file
-121--3560117-

В качестве ссылки я всегда использую/ссылаюсь на Форматирование последовательности и, по-видимому, нет «th» ни в одной из доступных переменных, но вы можете легко построить последовательность с

string.Format("{0:dddd dd}{1} {0:MMMM yyyy}", DateTime.Now, (?));

Тогда вы должны будете указать «st» для 1, «nd» для 2, «rd» для 3 и «th» для всех остальных и могут быть встроены в оператор «?:».

var now = DateTime.Now;
(now.Day % 10 == 1 && now.Day != 11) ? "st"
: (now.Day % 10 == 2 && now.Day != 12) ? "nd"
: (now.Day % 10 == 3 && now.Day != 13) ? "rd"
: "th"
-121--874866-

Здесь можно увидеть два различных подхода: либо вы продолжаете работу в репозитории, а затем вручную выполняете операции сброса в репозитарий, когда чувствуете, что ваш код находится на уровне. Другой подход заключается в том, чтобы посмотреть на svn крючки фиксации - то есть сценарии, которые выполняются каждый раз, когда фиксация сделана. Из такого сценария я предполагаю, что вы можете легко сделать то же самое в другом репозитории.

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

1
ответ дан 15 December 2019 в 01:02
поделиться

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

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

-121--3894661-

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

0
ответ дан 15 December 2019 в 01:02
поделиться

Использование репозитория клиента

Один раствор будет просто использовать репозиторий вашего клиента напрямую. Любые другие «вещи», которые там не принадлежат, это имеет отношение только к вашей книге, такому как ваше управление проектами, хронометраж, и т. Д., Может пойти в ваш локальный репозиторий. Вы бы сохранили два отдельных, с двумя отдельными рабочими копиями, хотя вы можете настроить SVN: внешний в местном репозитории, указываю на репозиторий клиента, если вы хотите немного сложно.

Это должно работать так долго, как и вы, и клиент довольны тем, насколько прекрасны ваши коммиты. Вы также можете подумать о работе в филиале в репозитории вашего клиента и объединяться в багажник, когда вы довольны своей работой. Он также имеет преимущество (для вашего клиента), что у клиента есть резервная копия всех ваших рабочих прогресса, которые они могут понравиться.

Гит с интеграцией Subversion

Другое решение может быть использовано в Git локально и использовать его способность работать с Subversion . Вы могли бы сохранить ваш прогресс в легкой местной ветке.

0
ответ дан 15 December 2019 в 01:02
поделиться

Я не уверен, что такое проблема. Вы используете другой URL-адрес SVN, но все остальное одинаково. Что вы подразумеваете под «хранением книги»?

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

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

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

2
ответ дан 15 December 2019 в 01:02
поделиться

Вы можете отсортировать кортежи O (n log n), затем создать словарь O (n)

или более простой O (n), но в случае множества кортежей Вы можете наложить на память большую нагрузку:

your_dict = {}
for (a,b) in your_list:
    if b in your_dict:
        your_dict[b].append(a)
    else:
        your_dict[b]=[a]

мм это почти то же самое, что Вы описали. Что неловко в этом?

Вы также могли бы рассмотреть возможность использования базы данных SQL для выполнения грязной работы.

-121--1207016-

Класс должен быть совместимым. Это может быть не так, если у вас есть ComVisible (false) для всей сборки.

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

Но сначала снимите его до минимума. Поместите exe в ту же папку, что и сборка .Net, и пропустите файл конфигурации и базу приложений.

Перед тем, как что-то перепутать, здесь происходит исключение, верно?

 ov := obj.Unwrap;
-121--2271309-

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

Существует несколько простых в использовании библиотек Subversion, и у меня не было особых проблем с SvnKit .

0
ответ дан 15 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

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