分支名称限制

This commit is contained in:
caishi 2026-01-23 14:54:49 +08:00
parent d6a150f837
commit 2231db1ed7
3 changed files with 42 additions and 31 deletions

View File

@ -239,21 +239,25 @@ function Index(props) {
function checkNewBranchName(e) {
setNewBranchError(undefined);
const value = e.target.value;
// ~ ^ : ? * [ ] \
let reg = /[ \\~^:?*\[\]\n]/;
// 3. / .
let reg1 = /^[/\.]|[/\.]$/
// 4. / .
let reg2 = /(\.\.+|\/\/+)/
// 5. git
let reg3 = /^(HEAD|FETCH_HEAD|ORIG_HEAD)$/
if (value) {
const str = '^*';
let reg = /\\/g;
if(reg.test(value)){
setNewBranchError('分支名不能包含下列任何字符:^ * \\ ');
setNewBranchError(<span>分支名不能包含下列任何字符~ ^ : \ ? * [ ] </span>);
}else if(reg1.test(value)){
setNewBranchError('分支名不能以 / 或 . 开头结尾');
}else if(reg2.test(value)){
setNewBranchError('分支名不能有连续的 / 或 .');
}else if(reg3.test(value)){
setNewBranchError('分支名不能是git保留关键字');
}else{
for(var i=0;i<str.length;i++){
let s = str[i];
if(value.indexOf(s) > -1){
setNewBranchError('分支名不能包含下列任何字符:^ * \\ ');
return;
}else{
setNewBranchName(e.target.value);
}
}
setNewBranchName(e.target.value);
}
}
}

View File

@ -52,14 +52,20 @@ function OperateDate(props){
{/* 操作日志 */}
<div className='operationCommentBor'></div>
<div className='flexCenter font-14' style={{width: '100%'}}>
<div className='flexCenter opBox'>
<div className='df opBox' style={{alignItems:"flex-start"}}>
<span className='iconBackBox mr10'><i className={`iconfont font-12 ${journalsIcon[item.operate_category] || "icon-bianji7"}`}></i></span>
<div className='task-hide operationWords' style={{maxWidth: item.closeAndSpan && item.id === item.start? '550px' : '700px'}}>
<Link to={`/${item.user.login}`}><img src={getImageUrl(item.user.image_url)} alt="" className='commentUserImg mr5'/></Link>
<Link to={`/${item.user.login}`}>{item.user.name}&nbsp;</Link>
{(item.user.name.length + item.operate_content.length) > 62 ? <Tooltip title={<div><span>{item.user.name} </span><span dangerouslySetInnerHTML={{__html:item.operate_content}}></span></div>}><span dangerouslySetInnerHTML={{__html:item.operate_content}}></span></Tooltip> : <span dangerouslySetInnerHTML={{__html:item.operate_content}}></span>}
<div className='operationWords' style={{flex:1}}>
<Link to={`/${item.user.login}`}><img src={getImageUrl(item.user.image_url)} alt="" className='commentUserImg mr5'/></Link>
<Link to={`/${item.user.login}`}>{item.user.name}&nbsp;</Link>
{/* {(item.user.name.length + item.operate_content.length) > 62 ?
<Tooltip title={<div><span>{item.user.name} </span><span dangerouslySetInnerHTML={{__html:item.operate_content}}></span></div>}>
<span dangerouslySetInnerHTML={{__html:item.operate_content}}></span>
</Tooltip> :
<span dangerouslySetInnerHTML={{__html:item.operate_content}}>
</span>} */}
<span dangerouslySetInnerHTML={{__html:item.operate_content}}></span>
<span className='ml15 timeAgo font-14' style={{marginTop:"-2px"}}>{timeAgo(item.created_at)}</span>
</div>
<span className='ml15 timeAgo font-14' style={{marginTop:"-2px"}}>{timeAgo(item.created_at)}</span>
</div>
</div>
</div>}

View File

@ -181,20 +181,21 @@ class UserSubmitComponent extends Component {
callback();
}
if (value) {
const str = '^*';
let reg = /\\/g;
let reg = /[ \\~^:?*\[\]\n]/;
// 3. 不能以 / 或 . 开头结尾
let reg1 = /^[/\.]|[/\.]$/
// 4. 不能有连续的 / 或 .
let reg2 = /(\.\.+|\/\/+)/
// 5. 不能是git保留关键字
let reg3 = /^(HEAD|FETCH_HEAD|ORIG_HEAD)$/
if(reg.test(value)){
callback(<span>分支名不能包含下列任何字符^*\</span>);
}else{
for(var i=0;i<str.length;i++){
let s = str[i];
if(value.indexOf(s) > -1){
callback(<span>分支名不能包含下列任何字符^*\</span>);
return;
}else{
continue;
}
}
callback(<span>分支名不能包含下列任何字符~ ^ : \ ? * [ ] </span>);
}else if(reg1.test(value)){
callback('分支名不能以 / 或 . 开头结尾');
}else if(reg2.test(value)){
callback('分支名不能有连续的 / 或 .');
}else if(reg3.test(value)){
callback('分支名不能是git保留关键字');
}
}
callback();