¿Cómo puedo exportar un informe de sets de cambios seleccionados con Mercurial?

Me gustaría exportar una list de sets de cambios en un formatting tipo "informe", con el autor, el comentario y los files modificados (solo los nombres de los files, no los contenidos).

Estoy usando TortoiseHg en Windows. ¿Cómo puedo lograr esto?

¿Qué tipo de formatting quieres? Use hg log con una plantilla. Mercurial tiene un amplio soporte para personalizar los resultados, y está muy bien documentado en el libro mercurial.

Así que resolví este problema (como muchos otros) con Powershell. Genere un informe HTML basado en los files de parche que Mercurial puede exportar.

Ciertamente no es perfecto, pero funciona bastante bien. Se aplica el descargo de responsabilidad típico, utilícelo bajo su propio riesgo, no soy responsable de lo que sucede si ejecuta esto, etc. etc.

Aquí está el código:

 function Generate-PatchReport([string]$loc) { $patchFiles = ls $loc -Filter "*.patch" $html = @() $html += "<html><head><title>Diff Report</title><style type=`"text/css`">body,table{font-family:Verdana;font-size:10pt} table{border-collapse:collapse;margin:10px} p{margin:0} thead{font-weight:700} td{border:1px solid gray;padding:5px} .bin{background-color:#eee} .add{background-color:#dfd} .chg{background-color:#ffd} .rem{background-color:#fdd} hr{height:1px;background-color:#999;border:none;margin-top:15px;margin-bottom:15px}</style></head><body>" foreach($patch in $patchFiles) { $lines = gc $patch.FullName; # Get checkin notes $null, $null, $username = $lines[1].Split(' ') $datestamp = $lines[2].Split(' ')[2] $date = Get-Date -Year 1970 -Month 1 -Day 1 -Minute 0 -Hour 0 -Second 0 -Millisecond 0 $date = $date.AddSeconds($datestamp) foreach($l in $lines) { if(!$l.StartsWith('#')) { $note = $l break; } } $html += '<p><strong>Note:</strong> ' + $note + '</p>' $html += "<p><strong>User:</strong> $username</p>" $html += "<p><strong>Timestamp:</strong> $($date.ToString("MM/dd/yyyy hh:mm tt")) UTC</p>" # Generate file reports $html += "<table><thead><td>Operation</td><td>File</td></thead>" for($i = 0; $i -lt $lines.Length; $i++) { if($lines[$i].StartsWith('diff')) { $html += "<tr>" $null, $null, $null, $null, $null, $filename = $lines[$i].Split(' ') if($lines[$i+1].Contains('Binary file')) { $html += '<td class="bin">% Binary</td>' } elseif($lines[$i+1].Contains('/dev/null')) { $html += '<td class="add">+ Add</td>' } elseif($lines[$i+2].Contains('/dev/null')) { $html += '<td class="rem">- Remove</td>' } else { $html += '<td class="chg">&bull; Change</td>' } $html += "<td>$filename</td>" $html += "</tr>" } } $html += "</table><hr />" } # Finalize HTML $html += "</body></html>" # Write the file to the same folder sc $html -Path ([System.IO.Path]::Combine($loc, "PatchReport.html")) }