mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 14:31:02 +00:00 
			
		
		
		
	git/commit: re-implement submodules file reader (#8438)
Reimplement the submodules parser to not depend on the go-git dependency. See #8222 for the full refactor context. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8438 Reviewed-by: Gusted <gusted@noreply.codeberg.org> Co-authored-by: oliverpool <git@olivier.pfad.fr> Co-committed-by: oliverpool <git@olivier.pfad.fr>
This commit is contained in:
		
					parent
					
						
							
								48cc6e684a
							
						
					
				
			
			
				commit
				
					
						5158493ba6
					
				
			
		
					 17 changed files with 220 additions and 166 deletions
				
			
		|  | @ -108,7 +108,7 @@ func GetObjectTypeFromTreeEntry(entry *git.TreeEntry) ContentType { | |||
| 	switch { | ||||
| 	case entry.IsDir(): | ||||
| 		return ContentTypeDir | ||||
| 	case entry.IsSubModule(): | ||||
| 	case entry.IsSubmodule(): | ||||
| 		return ContentTypeSubmodule | ||||
| 	case entry.IsExecutable(), entry.IsRegular(): | ||||
| 		return ContentTypeRegular | ||||
|  | @ -211,14 +211,14 @@ func GetContents(ctx context.Context, repo *repo_model.Repository, treePath, ref | |||
| 			return nil, err | ||||
| 		} | ||||
| 		contentsResponse.Target = &targetFromContent | ||||
| 	} else if entry.IsSubModule() { | ||||
| 	} else if entry.IsSubmodule() { | ||||
| 		contentsResponse.Type = string(ContentTypeSubmodule) | ||||
| 		submoduleURL, err := commit.GetSubModule(treePath) | ||||
| 		submodule, err := commit.GetSubmodule(treePath, entry) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		if submoduleURL != "" { | ||||
| 			contentsResponse.SubmoduleGitURL = &submoduleURL | ||||
| 		if submodule.URL != "" { | ||||
| 			contentsResponse.SubmoduleGitURL = &submodule.URL | ||||
| 		} | ||||
| 	} | ||||
| 	// Handle links | ||||
|  | @ -230,7 +230,7 @@ func GetContents(ctx context.Context, repo *repo_model.Repository, treePath, ref | |||
| 		downloadURLString := downloadURL.String() | ||||
| 		contentsResponse.DownloadURL = &downloadURLString | ||||
| 	} | ||||
| 	if !entry.IsSubModule() { | ||||
| 	if !entry.IsSubmodule() { | ||||
| 		htmlURL, err := url.Parse(repo.HTMLURL() + "/src/" + url.PathEscape(string(refType)) + "/" + util.PathEscapeSegments(ref) + "/" + util.PathEscapeSegments(treePath)) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
|  |  | |||
|  | @ -87,7 +87,7 @@ func GetTreeBySHA(ctx context.Context, repo *repo_model.Repository, gitRepo *git | |||
| 		if entries[e].IsDir() { | ||||
| 			copy(treeURL[copyPos:], entries[e].ID.String()) | ||||
| 			tree.Entries[i].URL = string(treeURL) | ||||
| 		} else if entries[e].IsSubModule() { | ||||
| 		} else if entries[e].IsSubmodule() { | ||||
| 			// In Github Rest API Version=2022-11-28, if a tree entry is a submodule, | ||||
| 			// its url will be returned as an empty string. | ||||
| 			// So the URL will be set to "" here. | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue