J'écris un script qui exécutera une version uniquement s'il y a un changement dans le code source. J'ai besoin de savoir s'il y a un changement depuis la dernière exécution. Cela fonctionnait parce que le dossier ne serait pas supprimé, donc il était facile de déterminer s'il y avait un changement, mais maintenant tout est supprimé chaque fois que la construction est lancée. J'ai pensé à utiliser la commande TFS TF history pour interroger le dernier changeset ou les deux derniers changesets, mais j'ai eu des problèmes d'analyse du nombre de changeset depuis la sortie. J'ai également envisagé d'utiliser la commande changeset. Y a-t-il un paramètre de ligne de commande que je peux utiliser pour répondre à la question, y a-t-il eu un changement depuis une date ou un numéro de changeset?Utilisation de l'historique TFS TF pour déterminer le dernier ensemble de modifications
Répondre
Comme Andrew l'a mentionné, TFS possède une fonctionnalité d'intégration continue intégrée. Cependant, oui, il est facile d'interroger les changesets depuis un certain point, que ce soit une date ou un changeset. Vous voulez regarder l'histoire entre cette dernière et changeset:
tf history <folder> /version:C<changeset>~T /noprompt /recursive
Si la sortie seule ligne est le changeset vous interrogé pour, il est évident que il n'y a eu aucun changement depuis cette checkin. Sinon, vous verrez les changesets supplémentaires, un par ligne.
Ouais, cela me dit les changesets, y compris celui demandé. Comment pourrais-je analyser le nombre seul de la sortie? Existe-t-il un moyen d'analyser les commandes par lots? –
Il existe un adaptateur qui peut intégrer BuildForge et Microsoft Team Foundation Server. Voici l'URL si vous êtes intéressé ... http://www-304.ibm.com/partnerworld/gsd/solutiondetails.do?&solution=46360&lc=en
L'adaptateur Automatra TFS Forge Rational Build offre une intégration continue (CI) et de reporting.
L'adaptateur TFS active en outre les fonctions CI aux niveaux TFS Source (Change Set) et WorkItem. Les rapports prêts à l'emploi fournissent des rapports de nomenclature (BOM) clairs qui peuvent être transmis aux utilisateurs en aval de vos builds. Enfin, comme vous devez le savoir, la force de Build Forge réside dans sa capacité à créer des ponts avec le déploiement (et au-delà). De toute évidence, avec ces capacités d'intégration continue, vous pouvez ensuite aller de l'avant avec la capacité de livraison continue, je crois que vous souhaitez atteindre.
extrait de mon fichier séquentiel à construire.
set _aPath="f:\TFS\a"
set _TFPath="c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
...
pushd %_aPath%
%_TFPath%\TF.exe history . /r /noprompt /stopafter:1 /Version:W > temp
FOR /f "tokens=1" %%a in ('findstr /R "^[0-9][0-9]*" temp') do set _BuildVersion=10.3.0.%%a
del temp
popd
utilise un fichier temporaire, mais fonctionne bien.
Notez que vous n'avez pas besoin du fichier intermédiaire, par exemple: 'tf vc info d: \ w \ code04 \ Server.sln | findstr/R "Dernière modification: [^ \ r \ n] + r \ n" ' –
Mon script PowerShell qui est appelé GetVcsRevision.ps1
et situé dans un sous-dossier de VCS Racine:
param (
[string]$PathToTF='C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\TF.exe'
,[Parameter(Mandatory=$true)][string]$Login
,[Parameter(Mandatory=$true)][string]$Password
)
$result = &$PathToTF @("history","/stopafter:1","/recursive","..\*","/login:""$Login"",""$Password""") 2>&1 3>&1
if ($result.GetType().Name -eq "Object[]")
{
<# $result format is:
Changeset User Date Comment
--------- ----------------- ---------- ----------------------------------------
26038 user 24.06.2014 Sample commit comment
$result[2] is:
26038 user 24.06.2014 Sample commit comment
$result[2].Split(" ")[0] is:
26038
#>
$result[2].Split(" ")[0]
}
else
{
"0"
}
Il est l'envoi dernier numéro de changeset à sortir tuyau. Si quelque chose ne va pas, alors ce numéro est 0
.
Vous pouvez créer une fonction à partir de ce script et l'appeler dans votre script de construction.
Pour le dernier numéro de changeset sans espace de travail local, s'il vous plaît utilisez cette commande:
tf history /collection:"http://server:8080/tfs/Collection" "$/Project" /recursive /stopafter:1 /noprompt /login:domain\user,password
Je t'aime tellement. – Yogurtu
Ma commande d'une ligne:
for /f "usebackq tokens=*" %%a in (`tf history . /recursive /noprompt /stopafter:1 /version:T ^| powershell -Command "$input | ? { $_ -imatch '^(\d+)\s+' } | %% { $matches[0].Trim() } | Select-Object -First 1"`) do set TIP_CHANGESET=%%a
après l'exécution env TIP_CHANGESET. variable contient un ensemble de modifications de pointe
- 1. Utilisation de l'API TFS pour restaurer un ensemble de modifications
- 2. Discard indésirable ensemble de modifications
- 3. Restauration d'un ensemble de modifications dans tfs
- 4. Fusion TFS: impossible de rejeter un ensemble de modifications
- 5. Utilisation de Git-tf pour le projet iOS
- 6. Liaison ensemble de modifications Git avec le travail TFS
- 7. Comprendre le rollback Ensemble de modifications complet dans tfs?
- 8. restaurer tfs changeset manquant avec git tf ou git tfs
- 9. Comment bloquer un ensemble de modifications de fusionner dans TFS?
- 10. TFS: Annulation d'un ensemble de modifications mais vérification en premier?
- 11. TFS Fusionner ensemble de modifications spécifiques - Modifier l'ensemble manquant
- 12. Fusion d'un ensemble de modifications au parent parent dans TFS
- 13. Git-Tfs: Transférer un ensemble de modifications TFS dans le référentiel git existant
- 14. TFS 2010 - fusionner les ensembles de modifications
- 15. Impossible de déverrouiller les modifications d'un utilisateur dans TFS. Les commandes tf sont arrivées à expiration
- 16. TFS + obtenir le dernier
- 17. Annuler un ensemble de modifications à partir de la ligne de commande uniquement dans TFS?
- 18. Utiliser le jeu de modifications TFS dans le numéro de version
- 19. Comment lister les diffs de contenu de fichiers pour un ensemble de modifications TFS particulier via une ligne de commande?
- 20. TFS: Obtenir les fichiers d'un ensemble de modifications avant d'apporter d'autres modifications
- 21. TFS - Obtention de tous les ensembles de modifications inclus dans le dernier get
- 22. Comment insérer le dernier numéro de jeu de modifications TFS dans une page aspx?
- 23. tfs $ tf dossier est absent de l'espace de travail local
- 24. Notification d'événement pour les modifications apportées aux définitions de construction TF
- 25. Modifications de l'enregistrement partiel dans TFS/VSTS2010
- 26. Supprimer le lien d'un ensemble de modifications d'une révision de code dans TFS 2013?
- 27. Création d'une solution sur TFS à l'aide d'un ensemble de modifications spécifique
- 28. "statut tf" pour voir les modifications en attente sans "ajouté"
- 29. Git équivalent aux ensembles de modifications TFS
- 30. TFS Obtenir le dernier journal
Tout d'abord, Team Build dispose d'une fonctionnalité qui le fait déjà. Utilisez-vous autre chose? Deuxièmement, est-ce que _any_ change dans le dépôt est suffisant pour déclencher la construction, ou avez-vous besoin de voir s'il y a un changement dans un répertoire ou des répertoires spécifiques? – Andrew
Ouais, j'utilise un système différent, buildforge spécifiquement. Nous utilisons un adaptateur TFS pour les versions CI, mais nous voulons seulement exécuter la construction s'il y a une mise à jour. Puisque la construction est spécifique à une branche, je veux seulement savoir s'il y a un changement dans cette branche/dossier. –
La réponse de Guanghui Qin, fonctionne très bien, est très rapide et vous n'avez pas besoin d'un espace de travail pour cela. – Yogurtu