Add new initialize option as git commit -m "..." --allow-empty"

This commit is contained in:
KOUNOIKE Yuusuke
2018-01-28 18:59:39 +09:00
parent c8b6eb1bd9
commit 3793a51e3f
2 changed files with 22 additions and 12 deletions

View File

@@ -89,23 +89,26 @@ trait RepositoryCreationService {
val gitdir = getRepositoryDir(owner, name) val gitdir = getRepositoryDir(owner, name)
JGitUtil.initRepository(gitdir) JGitUtil.initRepository(gitdir)
if (initOption == "README") { if (initOption == "README" || initOption == "EMPTY_COMMIT") {
using(Git.open(gitdir)) { git => using(Git.open(gitdir)) { git =>
val builder = DirCache.newInCore.builder() val builder = DirCache.newInCore.builder()
val inserter = git.getRepository.newObjectInserter() val inserter = git.getRepository.newObjectInserter()
val headId = git.getRepository.resolve(Constants.HEAD + "^{commit}") val headId = git.getRepository.resolve(Constants.HEAD + "^{commit}")
val content = if (description.nonEmpty) {
name + "\n" +
"===============\n" +
"\n" +
description.get
} else {
name + "\n" +
"===============\n"
}
builder.add(JGitUtil.createDirCacheEntry("README.md", FileMode.REGULAR_FILE, if (initOption == "README") {
inserter.insert(Constants.OBJ_BLOB, content.getBytes("UTF-8")))) val content = if (description.nonEmpty) {
name + "\n" +
"===============\n" +
"\n" +
description.get
} else {
name + "\n" +
"===============\n"
}
builder.add(JGitUtil.createDirCacheEntry("README.md", FileMode.REGULAR_FILE,
inserter.insert(Constants.OBJ_BLOB, content.getBytes("UTF-8"))))
}
builder.finish() builder.finish()
JGitUtil.createNewCommit(git, inserter, headId, builder.getDirCache.writeTree(inserter), JGitUtil.createNewCommit(git, inserter, headId, builder.getDirCache.writeTree(inserter),

View File

@@ -65,6 +65,13 @@ isCreateRepoOptionPublic: Boolean)(implicit context: gitbucket.core.controller.C
Create an empty repository. You have to initialize by yourself initially. Create an empty repository. You have to initialize by yourself initially.
</div> </div>
</label> </label>
<label class="radio">
<input type="radio" name="initOption" value="EMPTY_COMMIT"/>
<span class="strong">Initialize this repository with an empty commit</span>
<div class="normal muted">
Create an empty repository with empty commit. You can clone the repository immediately.
</div>
</label>
<label class="radio"> <label class="radio">
<input type="radio" name="initOption" value="README"/> <input type="radio" name="initOption" value="README"/>
<span class="strong">Initialize this repository with a README</span> <span class="strong">Initialize this repository with a README</span>