2009-07-21 8 views
4

Je suis en train de mettre tous svn: est un ensemble de fichiers passepoilées:

dir * -include *.cs | Select-String -simplematch -pattern "HeadURL$" | select filename | svn propset svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_ 

je suis l'erreur suivante:

svn: Try 'svn help' for more info 
svn: Explicit target required ('HeadURL Id LastChangedBy LastChangedRevision' interpreted as prop value) 

Le problème est que $ _ ne sont pas transmises sur svn propset ...

Que faire?

Répondre

9

Pour $_ pour avoir une valeur, vous devez l'utiliser dans un contexte où il est réellement défini. cela signifie que vous devez envelopper votre appel à svn dans une applet de commande ForEach-Object Pour votre scénario spécifique:

dir * -include *.cs | Select-String -simplematch -pattern "HeadURL$" | select filename | % { svn propset svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_ } 

(je l'ai utilisé les % alias ici par souci de concision)

intérieur qui ForEach la $_ variable a une valeur et peut être utilisé.

Cependant, j'ai vu quelques utilisations où l'objet de pipeline actuel a été ajouté aux arguments d'un programme lors de la tuyauterie dans les non-cmdlets. Je n'ai pas entièrement compris cela jusqu'à présent, cependant. Mais pour comprendre ce que vous faites ici: Vous essayez de définir svn:keywords sur tous les fichiers qui en utilisent un. Une approche sans doute plus robuste et plus lisible serait en fait filtre la liste que vous numérisez:

gci * -inc *.cs | 
Where-Object { 
    (Get-Content $_) -match 'HeadURL$' 
} 

(pourrait fonctionner, n'ont pas testé)

Vous pouvez alors continuer en juste tuyauterie en foreach:

| ForEach-Object { 
    svn ps svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_.FullName 
} 

en outre, ici vous pouvez accéder à toutes les propriétés de l'objet fichier et pas besoin de compter sur l'objet Select-String vous donne.

+0

Salut. Merci beaucoup pour votre aide! J'ai blogué sur ma solution: http://startbigthinksmall.wordpress.com/2009/07/27/setting-svnkeywords-for-specific-files-with-windows-powershell-or-grep-with-powershell/ –

Questions connexes