Subclipse с адаптером SVNKit

re.sub() принимает 3 параметра, но здесь проблема не в этом. Фактически вы не замените текст, который пытаетесь заменить, простой записью в файл, не пытаясь сначала найти смещение, в которое вы хотите записать, с помощью функции seek(). Это проблема для вас, потому что ваша замещающая строка длиннее, чем оригинал, и вы, вероятно, в конечном итоге будете записывать данные, которые вы не собирались. Другая проблема заключается в том, что вы решили открыть файл для добавления, которое в некоторых системах добавляется ТОЛЬКО в конец файла, что, я уверен, не является вашим намерением.

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

def write_over():
    file_name = '/etc/sysctl.conf'
    new_string = 'net.ipv4.ipfrag_low_thresh = 15728640'

    fh = open(file_name, 'r+')
    data = fh.read()

    result = re.search(r'net\.ipv4\.ipfrag_low_thresh\s?=?\s?[0-9]*', data) # check this regex, it may not be exactly what you need
    if result:
        if result.group(0) == new_string:  # if the string is exact match, do nothing
            fh.close()
            return
        data = data.replace(result.group(0), new_string + '\n') # else replace with new string
        fh.truncate(0) # this will clear the contents of the file
        fh.seek(0)
        fh.write(data) # write the new data in its entirety to the file
        fh.close()
    else:
        fh.write('\n' + new_string) # if the line was not in the file at all
        fh.close()
24
задан Glorfindel 2 March 2019 в 11:00
поделиться

2 ответа

Мудрый функцией, оба набора обеспечивают ту же сумму функциональности. SVNkit был конкретно разработан с Subclipse в памяти, таким образом, никакие неожиданности там.

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

Подверсия 1.5 имеет некоторые решительные улучшения скорости, но это не применяется в Вашем случае.

основное различие - то, что Вам не нужна правильная версия javahl, установленного в Вашем компьютере. Для Linux это часто - проблема, потому что это означает, что необходимо настроить огибающий переменный LIBRARY_PATH для Eclipse, таким образом, общая библиотека может быть загружена правильно плюс Вы, возможно, должен был бы скомпилировать библиотеку сами, если Вы не можете найти пакет, который соответствует Вашим потребностям. В Вашем случае Ubuntu должна идти с предварительно скомпилированной библиотекой, но та библиотека для Подверсии 1.5. Это должно отступить корректно, когда Вы соединяетесь с 1,4 серверами, все же.

парни Subclipse поддерживают SVNkit, но у меня были проблемы с ним в прошлом (который был несколько лет назад; я положителен, что это улучшилось значительно с тех пор). Они были зафиксированы довольно быстро, также.

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

[РЕДАКТИРОВАНИЕ] относительно, "Что должно, я загружаю", я думаю, что Вам нужно все ниже "Адаптера SVNKit (дополнительно)", который является всеми тремя компонентами (см. SVNKit FAQ).

26
ответ дан Aaron Digulla 28 November 2019 в 23:49
поделиться

Я всегда рекомендовал бы использовать JavaHL, если это возможно. JavaHL пользуется теми же собственными библиотеками Subversion как клиент командной строки и таким образом, Вы получаете максимальную совместимость. Конечно, как Вы указываете, использование SVNKit, конечно, легче. У нас действительно есть FAQ для помощи с получением работы JavaHL хотя:

http://subclipse.tigris.org/wiki/JavaHL

Что касается библиотеки JNA, я полагаю, что SVNKit использует ее для вещей, которые не могут легко быть сделаны от Java. Например, на Linux, работающем с символьными ссылками и устанавливающем полномочия на файлах.

10
ответ дан Mark Phippard 28 November 2019 в 23:49
поделиться
Другие вопросы по тегам:

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