[Mercurial] +getContentAsBytes in HgContentRevision.
[idea/community.git] / plugins / hg4idea / resources / python / filemerge.py
1 #!/usr/bin/env python
2
3 from mercurial import filemerge, ui, util
4 from mercurial.node import short
5 import sys, struct, socket
6
7 def monkeypatch_method(cls):
8     def decorator(func):
9         setattr(cls, func.__name__, func)
10         return func
11     return decorator
12
13 @monkeypatch_method(filemerge)
14 def filemerge(repo, mynode, orig, fcd, fco, fca):
15     port = int(repo.ui.config( 'hg4ideafilemerge', 'port', None, True))
16   
17     repo.ui.debug( "hg4idea server waiting on port %s" % port )
18   
19     if not port:
20         util.abort("No port was specified")
21
22     def send( client, data ):
23         length = struct.pack('>L', len(data))
24         client.sendall( length )
25         client.sendall( data)
26
27     client = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
28     repo.ui.debug( "connecting ..." )
29     try:
30         client.connect( ('127.0.0.1', port) )
31         repo.ui.debug( "connected, sending data ..." )
32         send( client, fcd.data() )
33         send( client, fco.data() )
34         send( client, fca.data() )
35         print client.recv(1024)
36         return 1;
37     except:
38         util.abort( "Could not send data to hg4idea")