Si es la última revisión (HEAD) puede (COPIA DE SEGURIDAD DE tu repositorio de antemano) eliminar los archivos de esa revisión en db\revs
y db\revprops
y luego ejecute el siguiente script en Python para arreglar lo que la revisión que Repo piensa cabeza es.
p. Ej. si head es 522 y la contraseña se confirmó en 520, deberá eliminar las revisiones 520,521 y 522.
(Este script no debería ser necesario una vez que se implementa SVN obliterate)
(no he escrito este guión, lo tengo desde here)
#!/usr/bin/python
def dec_to_36(dec):
key = 'abcdefghijklmnopqrstuvwxyz'
result = ''
while 1:
div = dec/36
mod = dec % 36
dec = div
result = key[mod] + result
if dec == 0:
break
return result
import os, re, sys
repo_path = sys.argv[1]
rev_path = os.path.join(repo_path, 'db', 'revs')
current_path = os.path.join(repo_path, 'db', 'current')
id_re = re.compile(r'^id:\ ([a-z0-9]+)\.([a-z0-9]+)\.r([0-9]+).*')
max_node_id = 0
max_copy_id = 0
max_rev_id = 0
for rev in os.listdir(rev_path):
f = open(os.path.join(rev_path, rev), 'r')
for line in f:
m = id_re.match(line)
if m:
node_id = int(m.group(1), 36)
copy_id = int(m.group(2), 36)
rev_id = int(m.group(3), 10)
if copy_id > max_copy_id:
max_copy_id = copy_id
if node_id > max_node_id:
max_node_id = node_id
if rev_id > max_rev_id:
max_rev_id = rev_id
f = open(current_path, 'w+b')
f.write("%d %s %s\n" % (max_rev_id, dec_to_36(max_node_id+1),
dec_to_36(max_copy_id+1)))
f.close()
El procedimiento que tiene esquemas romperá los enlaces para que ver el archivo HEAD actual y su historial no le mostrará fácilmente el Sin embargo, si configura la revisión de nuevo a la versión anterior a la eliminación, podrá volver a verla. El script –