1735: Perforce clients not adding the charset
- Fixed
- Review Board
| caro*****@gmai***** (Google Code) (Is this you? Claim this profile.) | |
|
|
|
| Feb. 6, 2012 | |
| 1736 |
What version are you running?
Applies both to 1.0 and 1.5RC1
What's the URL of the page containing the problem?
It's an issue on the reviewboard/scmtools/perforce.py file
What steps will reproduce the problem?
1. Add a perforce repository whose server is unicode
2. try to upload a review
3. The log will say: "Unicode servers permits only unicode enabled clients"
What is the expected output? What do you see instead?
You should be able to post reviews, you get an error message.
What operating system are you using? What browser?
Doesn't apply.
Please provide any additional information below.
One could solve it by adding the environment variable P4CHARSET, but if you want to use different repositories, some unicode, some not, that won't work.
I have fixed it temporarily by adding on perforce.py:
import P4
self.p4 = P4.P4()
self.p4.port = str(repository.mirror_path or repository.path)
self.p4.user = str(repository.username)
self.p4.password = str(repository.password)
if (str(repository.encoding)):
self.p4.charset = str(repository.encoding)
self.p4.exception_level = 1
And
cmdline = ['p4', '-p', self.p4.port]
if self.p4.user:
cmdline.extend(['-u', self.p4.user])
if self.p4.password:
cmdline.extend(['-P', self.p4.password])
if self.p4.charset:
cmdline.extend(['-C', self.p4.charset])
cmdline.extend(['print', '-q', file])
But that's just a temporary fix, since I don't know the real meaning of the encoding attribute.
Hi, I got this error in version 1.6.4.1. According to workaround, I modified perforce.py which is under ~/reviewboard/scmtools folder. Then the system show below info:
"Please correct the error below.
global name 'repository' is not defined"
Modified content:
import P4
self.p4 = P4.P4()
self.p4.port = str(repository.mirror_path or repository.path)
self.p4.user = str(repository.username)
self.p4.password = str(repository.password)
if (str(repository.encoding)):
self.p4.charset = str(repository.encoding)
self.p4.exception_level = 1
cmdline = ['p4', '-p', self.p4.port]
if self.p4.user:
cmdline.extend(['-u', self.p4.user])
if self.p4.password:
cmdline.extend(['-P', self.p4.password])
if self.p4.charset:
cmdline.extend(['-C', self.p4.charset])
cmdline.extend(['print', '-q', file])
Does anyone can tell me how to define "repository" as global name ?
The only lines I added on the top portion were:
if (str(repository.encoding)):
self.p4.charset = str(repository.encoding)
so, you should look at the other lines to see how they were accessing the repository configuration on your version. You should not define repository as a global name yourself. You have to use whatever is being used already.