Репозиторий SVN, который я импортировал в мерзавца, использующего мерзавца-svn, переместился

Я работаю с репозиторием мерзавца с помощью мерзавца-svn. Все шло прекрасное до дня, специалисты по обслуживанию репозитория SVN решили переместить репозиторий в другой URL.

Как я могу сказать моему клиенту мерзавца-svn выбирать от нового репозитория SVN?

Я имею, изменяет svn URL в svn-remote из .git/config но теперь я получаю следующую ошибку:

svn-remote.svn.url already set: https://old.svn.repo
wanted to set to: https://new.svn.repo
13
задан Fabian Jakobs 1 February 2010 в 17:43
поделиться

2 ответа

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

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

  <system.net>
    <connectionManagement>
      <remove address="*"/>
      <add address="*" maxconnection="10" />
    </connectionManagement>
  </system.net>

Я выбрал 10 в качестве примера - вам придется поэкспериментировать, чтобы увидеть влияние на пропускную способность, загрузку ЦП и использование памяти.

-121--5044541-

Лично я задаю его в Web.Config в разделе AppSettings, так как раздел параметры настройки не предоставляет для него места.

-121--2999642-

Возможны проблемы... поскольку git-svn встраивает URL-адрес SVN в каждое сообщение фиксации. Надеюсь, это тоже не проблема. Возможно, потребуется переписать всю историю, чтобы изменить все сообщения фиксации (используя git filter-branch). Но это может вызвать проблемы, если вы переместились куда-либо еще за пределы SVN.

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

Я не вижу причин, почему это не должно работать. Базовый код для Timer (в threading.py) просто использует time.sleep. Как только он ждал некоторое время, он в основном запускает цикл с time.sleep (0,05) Это должно привести к использованию ЦП в основном 0%, даже с сотнями потоков. Вот простой пример, где я заметил 0% загрузки ЦП для процесса python:

import threading

def nothing():
    pass

def testThreads():
    timers = [threading.Timer(10.0, nothing) for _ in xrange(881)]
    print "Starting threads."
    map(threading.Thread.start, timers)
    print "Joining threads."
    map(threading.Thread.join, timers)
    print "Done."

if __name__ == "__main__":
    testThreads()

Реальная проблема заключается в том, что вы, возможно, не сможете запустить слишком много потоков. В 64-разрядной 4GB системе я могу запустить только 881 поток до получения ошибки. Но если у тебя будет всего несколько сотен, я не могу представить, что это не сработает.

-121--3894468-

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

Картины сказать, что тысяча слов и образцов разметки подобны скриншотам для движков просмотра:) Вот один из моих любимых Spark View Engine

<viewdata products="IEnumerable[[Product]]"/>
<ul if="products.Any()">
  <li each="var p in products">${p.Name}</li>
</ul>
<else>
  <p>No products available</p>
</else>
-121--530056-

Возможно, вам также потребуется изменить файл .git/svn/.metadata .

1
ответ дан 2 December 2019 в 02:18
поделиться
Другие вопросы по тегам:

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