Могу ли я безопасно выполнить git/commit/push или rsync файл, который в данный момент записывается tee, не нарушая ни одного канала?

Не совсем понимаю, что вы пытаетесь сделать с этой строкой

set new '"$Backend1Name"'

Одинарные кавычки не имеют специального значения в Tcl/expect :они буквально являются частью значения $new. Значением переменной newбудет :одинарная кавычка, двойная кавычка, значение переменной Backend, двойная кавычка, одинарная кавычка. Если вы не установили переменную Backend1Name в ожидаемом сценарии, вы должны получить сообщение об ошибке.

Вы, наверное, хотите

  • если вы хотите, чтобы удаленная оболочка расширяла переменную

    set new {"$Backend1Name"}
    
  • если вы хотите, чтобы сценарий ожидания расширил переменную, но вам нужны двойные кавычки в значении

    set new "\"$Backend1Name\""
    

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

Вы можете просмотреть уроки 5 и 6 учебника по Tcl

1
06.07.2019, 13:34
1 ответ

Git не делает ничего, кроме чтения из файла. Это точно не сломает трубу. Вы даже можете создать репозиторий git для каталога только для чтения -и зафиксировать файлы только для чтения -. Пока вы только добавляете и фиксируете вещи, а не делаете что-то, что проверяет или изменяет рабочий каталог, единственное место, где Git должен писать, находится внутри каталога Git(.gitпо умолчанию, но вы можете поместить его куда-нибудь. иначе сgit --git-dir=…).

Если вы действительно беспокоитесь, вы можете убедиться в этом, посмотрев исходный код Git. Или посмотрите, что делает git для фиксации файла…

strace -o commit.strace -f git commit -m wibble foo

Вы увидите только вызовы lstatи open(…, O_RDONLY)на foo.

Что может потерпеть неудачу, так это git addдействие. Если процесс пишет в файл, пока Git его читает, Git может заметить, что файл изменился, и сдаться. Это не влияет на исходный файл в любом случае:git add myfileне должно ничего делать в случае сбоя, но даже если Git каким-то образом содержит ошибки и не восстанавливается должным образом, это повлияет только на индекс Git, а не на файл данных, который Git открывается только для чтения -. Я думаю, что сообщение об ошибке будет «запутано из-за нестабильных исходных данных объекта» , но я не проверял, может быть какая-то другая проверка размера, которая срабатывает первой. Учитывая вашу скорость передачи данных, если git addне работает, сделайте паузу на секунду и повторите попытку.

2
27.01.2020, 23:30

Теги

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