Eu tenho a seguinte linha em um script:
svn propset svn:externals $newExternals $path
Agora, pela primeira vez, $newExternals
é uma string multilinha (existem várias svn:external
propriedades) e svn
late para mim de uma forma que parece indicar que não consegue lidar com o argumento.
Não posso passar uma string multilinha para um programa que invoco no PowerShell?Ou isso é um problema de svn
não ser capaz de analisar isso? Ou preciso de orçamentos? (Não ajudou, mas posso ter estragado outra coisa.)
Se isso não funcionar, svn
também aceitaria um arquivo para ler o material:
svn propset svn:externals -F externals.txt $path
No entanto, isso parece falhar porque svn
espera externals.txt
ser um arquivo ASCII (ou UTF-8, não tenho certeza, mas não acho que seja relevante aqui), enquanto o PowerShell, por padrão, grava UTF-16. Então, qual é a maneira canônica de canalizar algo para um arquivo ASCII?
Como pergunta paralela: Qual é a maneira canônica de obter um caminho para criar um arquivo temporário?
Responder1
[io.path]::GetTempFileName() retornará um nome de arquivo temporário (incluindo o caminho)
Responder2
Não estou familiarizado com isso svn
, então desculpe-me se o seguinte não for relevante ... mas você certamente pode passar strings de várias linhas para o Powershell ou para um programa invocado pelo Powershell (supondo que o programa invocado o suporte).
Aqui está uma maneira de fazer isso que eu particularmente gosto, da Dica da semana do Technet Windows Powershell. (Powershell 'Aqui-Strings').
E aqui está outro, de uma resposta SO, embora eu não tenha ideia se isso funcionará com um programa invocado... apenas que funciona nativamente no PowerShell.
Finalmente, strings (em todas as variedades) também podem se estender além de uma única linha:
'Foo
bar'
Se nenhuma das técnicas funcionar, eu diria que você se deparou com uma limitação de svn
.
Responder3
No Windows, a pasta temporária dos usuários pode ser encontrada usando a variável de sistema TEMP ou TMP.
[Batch]
echo %TEMP%
echo %TMP%
[Powershell]
echo $env.temp
echo $env.tmp