[prev in list] [next in list] [prev in thread] [next in thread] 

List:       subversion-users
Subject:    =?utf-8?B?562U5aSNOiBDYW4gU1ZOIHB1bGwgcmVxdWVzdCBzYW1lIGFzIEdJVD8=?=
From:       钱海 <qianhaiyuan () hikvision ! com>
Date:       2018-12-03 3:22:25
Message-ID: ec215b02c52740978dba75cbab673dcc () hikvision ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]

[Attachment #4 (text/plain)]

In the past, we used another way to implement functions similar to pull requests:



We make a pre-commit code review like this ( we named it as Force Review):

1.Before developer commit code, user can use ForceReview command to create an online \
code review. ForceReview command is a tool to upload patches and start review .

   It can work at working copy, command like this : ForceReview @ReviewerA @ReviewerB \
-m ${Subject}



2.Reviewer review the code , and complete it. In fact , user will change his code and \
iterative pre-commit review.



3.When code review completed, developer can use code review ID to commit his code. \
One ID can only commit his code one time.



SVN use a pre-commit to make sure the code has code reviewed:

1.First we will define which code need to code review. We use regular expression to \
match those code.

[cid:image001.png@01D48AF9.45E3BDF0]



2.Then pre-commit script will get the code review ID in log message. And to determine \
if the code is allowed to be commit.



[cid:image002.png@01D48AF9.45E3BDF0]





Best Regards!

Haiyuan Qian

R & D Management Group

Hangzhou Hikvision Digital Technology Co.,Ltd

No.555 Qianmo Road, Binjiang District, Hangzhou 310052, China

T (86571)88075998-20081

M (86)18969199712



本邮件及其附件含有海康威视公司的保密信息,仅限于发送给上 \
地址中列出的个人或群组。禁止任何其他人以任何形式使用(包 \
但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并 \
除本邮件!

This e-mail and its attachments contain confidential information from HIKVISION, \
which is intended only for  the person or entity whose address is listed above. Any \
use of the information contained herein in any way (including, but not limited to, \
total or partial disclosure, reproduction, or dissemination) by persons other  than \
the intended recipient(s) is prohibited. If you receive this e-mail in error, please \
notify the sender by phone or email immediately and delete it!





-----邮件原件-----
发件人: Daniel Shahaf [mailto:danielsh@apache.org]
发送时间: 2018年12月2日 0:07
收件人: users@subversion.apache.org
抄送: 钱海远(Nathan)
主题: Re: Can SVN pull request same as GIT?



Nico Kadel-Garcia wrote on Sat, 01 Dec 2018 09:25 -0500:

> On Sat, Dec 1, 2018 at 4:00 AM Stefan Sperling <stsp@elego.de> wrote:

> > Note that we use such a workflow in SVN itself: When we backport changes

> > to stable branches and a merge conflict occurs, we prepare a branch.

> > Voting happens in a file called STATUS, and once the change is approved,

> > a bot known as 'svn-role' will merge it. See the log here for example:

> > http://svn.apache.org/viewvc/subversion/branches/1.11.x/STATUS

> 

> But that is a branch, with its changes recorded in the single upstream

> repository. There is no split brain between repositories to resolve.



Yes, that's exactly the point.  The easiest way to implement a "pull

request" workflow in Subversion is to use multiple branches within

a single repository.



At the data model level, pull requests are feature branches.  The

differences are in the surrounding social patterns and in tooling built

around the "pull request - review - merge" workflow.  Such tooling could

be implemented on top of Subversion 1.1.0 (sic), and has been.



> The identity, contents, and order of every individual change is there

> already. Resolving that with the individual changes and change history

> of another repository is.... well, that's where I'd expect life to get

> both difficult and dangerous.



Using multiple repositories and porting commits between them amounts to

implementing a DVCS (such as git-svn) on top of Subversion.  However, as

several people already pointed out, there's no need to be distributed in

order to support pull requests.  One only needs to be able to pass

patches around; branches achieve that.



Cheers,



Daniel


________________________________
CONFIDENTIALITY NOTICE:

This electronic message is intended to be viewed only by the individual or entity to \
whom it is addressed. It may contain information that is privileged, confidential and \
exempt from disclosure under applicable law. Any dissemination, distribution or \
copying of this communication is strictly prohibited without our prior permission. If \
the reader of this message is not the intended recipient, or the employee or agent \
responsible for delivering the message to the intended recipient, or if you have \
received this communication in error, please notify us immediately by return e-mail \
and delete the original message and any copies of it from your computer system. For \
further information about Hikvision company. please see our website at \
www.hikvision.com<http://www.hikvision.com>


[Attachment #5 (text/html)]

<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:宋体;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:"\@宋体";
	panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	text-align:justify;
	text-justify:inter-ideograph;
	font-size:10.5pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{mso-style-priority:99;
	mso-style-link:"纯文本 Char";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.5pt;
	font-family:"Calibri","sans-serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
	{mso-style-priority:99;
	mso-style-link:"批注框文本 Char";
	margin:0cm;
	margin-bottom:.0001pt;
	text-align:justify;
	text-justify:inter-ideograph;
	font-size:9.0pt;
	font-family:"Calibri","sans-serif";}
span.Char
	{mso-style-name:"纯文本 Char";
	mso-style-priority:99;
	mso-style-link:纯文本;
	font-family:"Calibri","sans-serif";}
span.Char0
	{mso-style-name:"批注框文本 Char";
	mso-style-priority:99;
	mso-style-link:批注框文本;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
/* Page Definitions */
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ZH-CN" link="blue" vlink="purple" style="text-justify-trim:punctuation">
<div class="WordSection1">
<p class="MsoPlainText"><span lang="EN-US">In the past, we used another way to \
implement functions similar to pull requests: <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">We make a pre-commit code review like this \
( we named it as Force Review):<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">1.Before developer commit code, user can use ForceReview command to \
create an online code review. ForceReview command is a tool to upload patches and \
start review .<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">&nbsp;&nbsp; It can work at working copy, command like this : \
ForceReview @ReviewerA @ReviewerB -m ${Subject}<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">2.Reviewer review the code , and complete it. \
In fact , user will change his code and iterative pre-commit \
review.<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">3.When code review completed, developer can use code review ID to commit \
his code. One ID can only commit his code one time.<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">SVN use a pre-commit to make sure the code \
has code reviewed:<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">1.First we will define which code need to code review. We use regular \
expression to match those code.<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><img width="1281" height="251" id="图片_x0020_1" \
src="cid:image001.png@01D48AF9.45E3BDF0"><o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">2.Then pre-commit script will get the code \
review ID in log message. And to determine if the code is allowed to be \
commit.<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><img width="1117" height="773" id="图片_x0020_2" \
src="cid:image002.png@01D48AF9.45E3BDF0"></span><span \
lang="EN-US"><o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">Best Regards!<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">Haiyuan Qian<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">R &amp; D Management Group<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">Hangzhou Hikvision Digital Technology \
Co.,Ltd<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">No.555 \
Qianmo Road, Binjiang District, Hangzhou 310052, China <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">T (86571)88075998</span><span \
style="font-family:宋体">-</span><span lang="EN-US">20081<o:p></o:p></span></p> \
<p class="MsoPlainText"><span lang="EN-US">M (86)18969199712<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoPlainText"><span \
style="font-family:宋体">本邮件及其附件含有海康威视公司的保密信 \
,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人 \
任何形式使用(包括但不限于全部或部分地泄露、复制、或散发 \
)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并 \
除本邮件!</span><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">This e-mail and its attachments contain \
confidential information from HIKVISION, which is intended only for&nbsp; the person \
or entity whose address is listed above. Any use of the information contained herein \
in any way  (including, but not limited to, total or partial disclosure, \
reproduction, or dissemination) by persons other&nbsp; than the intended recipient(s) \
is prohibited. If you receive this e-mail in error, please notify the sender by phone \
or email immediately and delete  it!<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-----</span><span \
style="font-family:宋体">邮件原件</span><span lang="EN-US">-----<br> \
</span><span style="font-family:宋体">发件人</span><span lang="EN-US">: Daniel \
Shahaf [mailto:danielsh@apache.org] <br>
</span><span style="font-family:宋体">发送时间</span><span lang="EN-US">: \
2018</span><span style="font-family:宋体">年</span><span \
lang="EN-US">12</span><span style="font-family:宋体">月</span><span \
lang="EN-US">2</span><span style="font-family:宋体">日</span><span lang="EN-US">  \
0:07<br> </span><span style="font-family:宋体">收件人</span><span lang="EN-US">: \
users@subversion.apache.org<br> </span><span \
style="font-family:宋体">抄送</span><span lang="EN-US">: </span><span \
style="font-family:宋体">钱海远</span><span lang="EN-US">(Nathan)<br> \
</span><span style="font-family:宋体">主题</span><span lang="EN-US">: Re: Can SVN \
pull request same as GIT?</span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">Nico Kadel-Garcia wrote on Sat, 01 Dec 2018 09:25 \
-0500:<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">&gt; On Sat, \
Dec 1, 2018 at 4:00 AM Stefan Sperling &lt;stsp@elego.de&gt; \
wrote:<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">&gt; &gt; \
Note that we use such a workflow in SVN itself: When we backport \
changes<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">&gt; &gt; to \
stable branches and a merge conflict occurs, we prepare a \
branch.<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">&gt; &gt; \
Voting happens in a file called STATUS, and once the change is \
approved,<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">&gt; &gt; \
a bot known as 'svn-role' will merge it. See the log here for \
example:<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">&gt; &gt; \
http://svn.apache.org/viewvc/subversion/branches/1.11.x/STATUS<o:p></o:p></span></p> \
<p class="MsoPlainText"><span lang="EN-US">&gt; <o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">&gt; But that is a branch, with its changes \
recorded in the single upstream<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">&gt; repository. There is no split brain between repositories to \
resolve.<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">Yes, that's exactly the point.&nbsp; The easiest way to implement a \
&quot;pull<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">request&quot; workflow in Subversion is to use multiple branches \
within<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">a single \
repository.<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">At the data model level, pull requests are feature branches.&nbsp; \
The<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">differences are \
in the surrounding social patterns and in tooling built<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">around the &quot;pull request - review - \
merge&quot; workflow.&nbsp; Such tooling could<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">be implemented on top of Subversion 1.1.0 \
(sic), and has been.<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">&gt; The identity, contents, and order of every individual change is \
there<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">&gt; already. \
Resolving that with the individual changes and change history<o:p></o:p></span></p> \
<p class="MsoPlainText"><span lang="EN-US">&gt; of another repository is.... well, \
that's where I'd expect life to get<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">&gt; both difficult and \
dangerous.<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">Using multiple repositories and porting commits between them amounts \
to<o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US">implementing a \
DVCS (such as git-svn) on top of Subversion.&nbsp; However, as<o:p></o:p></span></p> \
<p class="MsoPlainText"><span lang="EN-US">several people already pointed out, \
there's no need to be distributed in<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">order to support pull requests.&nbsp; One \
only needs to be able to pass<o:p></o:p></span></p> <p class="MsoPlainText"><span \
lang="EN-US">patches around; branches achieve that.<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">Cheers,<o:p></o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p> <p \
class="MsoPlainText"><span lang="EN-US">Daniel<o:p></o:p></span></p> </div>
&nbsp;<br>
<hr>
<div><span style="font-size:9pt;  font-family: 'Cambria','times new \
roman','garamond',serif; font-weight:bold;">CONFIDENTIALITY NOTICE:</span> <p \
style="font-size:8pt; line-height:10pt; font-family: 'Cambria','times roman',serif;"> \
This electronic message is intended to be viewed only by the individual or entity to \
whom it is addressed. It may contain information that is privileged, confidential and \
exempt from disclosure under applicable law. Any dissemination, distribution or \
copying  of this communication is strictly prohibited without our prior permission. \
If the reader of this message is not the intended recipient, or the employee or agent \
responsible for delivering the message to the intended recipient, or if you have \
received this  communication in error, please notify us immediately by return e-mail \
and delete the original message and any copies of it from your computer system. For \
further information about Hikvision company. please see our website at <span \
style="padding-top:10px; font-weight:bold; color:#CC0000; font-size:9pt; font-family: \
'Calibri',Arial,sans-serif; "> <a \
href="http://www.hikvision.com">www.hikvision.com</a></span><br> <br>
</p>
</div>
</body>
</html>


["image001.png" (image/png)]
["image002.png" (image/png)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic