125 raise error.Abort(_(b'either two or three arguments required')) |
125 raise error.Abort(_(b'either two or three arguments required')) |
126 a = r.ancestor(lookup(rev1), lookup(rev2)) |
126 a = r.ancestor(lookup(rev1), lookup(rev2)) |
127 ui.write(b'%d:%s\n' % (r.rev(a), hex(a))) |
127 ui.write(b'%d:%s\n' % (r.rev(a), hex(a))) |
128 |
128 |
129 |
129 |
|
130 @command(b'debugantivirusrunning', []) |
|
131 def debugantivirusrunning(ui, repo): |
|
132 """attempt to trigger an antivirus scanner to see if one is active""" |
|
133 with repo.cachevfs.open('eicar-test-file.com', b'wb') as f: |
|
134 f.write( |
|
135 util.b85decode( |
|
136 # This is a base85-armored version of the EICAR test file. See |
|
137 # https://en.wikipedia.org/wiki/EICAR_test_file for details. |
|
138 b'ST#=}P$fV?P+K%yP+C|uG$>GBDK|qyDK~v2MM*<JQY}+dK~6+LQba95P' |
|
139 b'E<)&Nm5l)EmTEQR4qnHOhq9iNGnJx' |
|
140 ) |
|
141 ) |
|
142 # Give an AV engine time to scan the file. |
|
143 time.sleep(2) |
|
144 util.unlink(repo.cachevfs.join('eicar-test-file.com')) |
|
145 |
|
146 |
130 @command(b'debugapplystreamclonebundle', [], b'FILE') |
147 @command(b'debugapplystreamclonebundle', [], b'FILE') |
131 def debugapplystreamclonebundle(ui, repo, fname): |
148 def debugapplystreamclonebundle(ui, repo, fname): |
132 """apply a stream clone bundle file""" |
149 """apply a stream clone bundle file""" |
133 f = hg.openpath(ui, fname) |
150 f = hg.openpath(ui, fname) |
134 gen = exchange.readbundle(ui, f, fname) |
151 gen = exchange.readbundle(ui, f, fname) |