Я работаю с репозиторием мерзавца с помощью мерзавца-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
Я предпочитаю создать класс 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.
Я не вижу причин, почему это не должно работать. Базовый код для 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
.