Posso passar uma string de várias linhas para o svn no PowerShell?

2

Eu tenho a seguinte linha em um script:

svn propset svn:externals $newExternals $path

Agora, pela primeira vez, $newExternals é uma cadeia de várias linhas (existem várias svn:external propriedades) e svn late para mim de uma forma que parece indicar que não é possível lidar com o argumento.

Não posso passar uma cadeia de várias linhas para um programa que invoco no PowerShell? Ou isso é um problema com svn não conseguir analisar isso? Ou eu preciso de citações? (Não ajudou, mas eu poderia ter estragado outra coisa.)

Se isso não funcionar, então svn também aceitaria um arquivo para ler as coisas de:

svn propset svn:externals -F externals.txt $path

No entanto, isso parece falhar porque svn espera que externals.txt seja 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 em um arquivo ASCII?

Como uma pergunta secundária: Qual é a maneira canônica de obter um caminho para criar um arquivo temporário em?

    
por sbi 24.08.2012 / 15:04

3 respostas

2

[io.path] :: GetTempFileName () retornará um nome de arquivo temporário (incluindo caminho)

    
por 24.08.2012 / 15:50
1

Eu não estou familiarizado com svn , então me desculpe se o seguinte não for relevante ... mas você certamente pode passar strings multilinhas para o Powershell, ou um programa chamado Powershell (assumindo que o programa invocado suporta isso.

Aqui está uma maneira de fazer isso que eu particularmente gosto, da Dica Technet Windows Powershell da Semana . (Powershell 'Here-Strings').

E aqui está outro, de uma resposta SO , embora eu não tenha ideia se isso funcionará com um programa chamado ... só que funciona nativamente no PowerShell.

Finally, strings (in all varieties) may also extend beyond a single line:

'Foo
bar'

Se nenhuma das técnicas funcionar, eu diria que você encontrou uma limitação de svn .

    
por 24.08.2012 / 16:47
0

No Windows, a pasta temporária de 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
    
por 24.08.2012 / 15:28