Skip to content

Commit 9982edb

Browse files
committed
update
1 parent 5677bcc commit 9982edb

File tree

14 files changed

+105
-19
lines changed

14 files changed

+105
-19
lines changed

models/lfs.go

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ type LFSMetaObject struct {
3434

3535
// LFSMetaObjectBasic represents basic LFS metadata.
3636
type LFSMetaObjectBasic struct {
37-
Oid string `xorm:"UNIQUE(s) INDEX NOT NULL"`
38-
Size int64 `xorm:"NOT NULL"`
37+
Oid string `json:"oid"`
38+
Size int64 `json:"size"`
3939
}
4040

41-
// IsPointerFile will return a partially filled LFSMetaObject if the provided byte slice is a pointer file
42-
func IsPointerFile(buf *[]byte) *LFSMetaObject {
41+
// IsPointerFileAndStored will return a partially filled LFSMetaObject if the provided byte slice is a pointer file and stored in contentStore
42+
func IsPointerFileAndStored(buf *[]byte) *LFSMetaObject {
4343
if !setting.LFS.StartServer {
4444
return nil
4545
}
@@ -70,6 +70,32 @@ func IsPointerFile(buf *[]byte) *LFSMetaObject {
7070
return meta
7171
}
7272

73+
// IsPointerFile will return a partially filled LFSMetaObject if the provided byte slice is a pointer file
74+
func IsPointerFile(buf *[]byte) *LFSMetaObjectBasic {
75+
if !setting.LFS.StartServer {
76+
return nil
77+
}
78+
79+
headString := string(*buf)
80+
if !strings.HasPrefix(headString, LFSMetaFileIdentifier) {
81+
return nil
82+
}
83+
84+
splitLines := strings.Split(headString, "\n")
85+
if len(splitLines) < 3 {
86+
return nil
87+
}
88+
89+
oid := strings.TrimPrefix(splitLines[1], LFSMetaFileOidPrefix)
90+
size, err := strconv.ParseInt(strings.TrimPrefix(splitLines[2], "size "), 10, 64)
91+
if len(oid) != 64 || err != nil {
92+
return nil
93+
}
94+
meta := &LFSMetaObjectBasic{Oid: oid, Size: size}
95+
96+
return meta
97+
}
98+
7399
// RelativePath returns the relative path of the lfs object
74100
func (m *LFSMetaObject) RelativePath() string {
75101
if len(m.Oid) < 5 {

models/repo.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -963,9 +963,9 @@ func CheckCreateRepository(doer, u *User, name string, lfs bool, lfsServer strin
963963
}
964964

965965
if lfs {
966-
u, err := url.ParseRequestURI(lfsServer)
966+
_, err := url.ParseRequestURI(lfsServer)
967967
if err != nil {
968-
return ErrMirrorLFSServerNotValid{}
968+
return ErrMirrorLFSServerNotValid{}
969969
}
970970
}
971971
return nil

modules/lfs/pointers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func ReadPointerFile(reader io.Reader) (*models.LFSMetaObject, *[]byte) {
2727
return nil, nil
2828
}
2929

30-
return models.IsPointerFile(&buf), &buf
30+
return models.IsPointerFileAndStored(&buf), &buf
3131
}
3232

3333
// ReadMetaObject will read a models.LFSMetaObject and return a reader

modules/lfsclient/client.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ func BasicTransferAdapter(ctx context.Context, client *http.Client, href string,
6969
}
7070
return nil, err
7171
}
72-
defer resp.Body.Close()
7372

7473
if resp.StatusCode != http.StatusOK {
7574
return nil, fmt.Errorf("Failed to query BasicTransferAdapter with response: %s", resp.Status)
@@ -81,12 +80,12 @@ func BasicTransferAdapter(ctx context.Context, client *http.Client, href string,
8180
func FetchLFSFilesToContentStore(ctx context.Context, metaObjects []*models.LFSMetaObject, userName string, repo *models.Repository, lfsServer string, contentStore *models.ContentStore) error {
8281
client := http.DefaultClient
8382

84-
rv, err := packbatch("download", nil, nil, metaObjects)
83+
rv, err := packbatch("download", []string{"basic"}, nil, metaObjects)
8584
if err != nil {
8685
return err
8786
}
8887
batchAPIURL := lfsServer + "/objects/batch"
89-
req, err := http.NewRequestWithContext(ctx, http.MethodGet, batchAPIURL, rv)
88+
req, err := http.NewRequestWithContext(ctx, http.MethodPost, batchAPIURL, rv)
9089
if err != nil {
9190
return err
9291
}

modules/repofiles/update.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func detectEncodingAndBOM(entry *git.TreeEntry, repo *models.Repository) (string
7070
buf = buf[:n]
7171

7272
if setting.LFS.StartServer {
73-
meta := models.IsPointerFile(&buf)
73+
meta := models.IsPointerFileAndStored(&buf)
7474
if meta != nil {
7575
meta, err = repo.GetLFSMetaObjectByOid(meta.Oid)
7676
if err != nil && err != models.ErrLFSObjectNotExist {

modules/repository/repo.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,10 @@ func FindLFSMetaObjectsBelowMaxFileSizeWithMissingFiles(commit *git.Commit, user
263263
log.Error("Unable to verify LFS OID[%s] size on %s/%s. Error: %v", meta.Oid, userName, repo.Name, err)
264264
return err
265265
}
266-
// remove collision if exists and size not matching
266+
// remove file collision if exists and size not matching
267267
if !fileSizeValid {
268-
if _, err := repo.RemoveLFSMetaObjectByOid(meta.Oid); err != nil {
269-
return fmt.Errorf("Error whilst removing matched LFS object %s: %v", meta.Oid, err)
268+
if err := contentStore.Delete(meta.RelativePath()); err != nil {
269+
return fmt.Errorf("Error whilst deleting contentStore file by LFS oid %s: %v", meta.Oid, err)
270270
}
271271
(*fetchingMetaObjectsSet)[meta.Oid] = meta
272272
}

routers/repo/lfs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ func createPointerResultsFromCatFileBatch(catFileBatchReader *io.PipeReader, wg
526526
}
527527
pointerBuf = pointerBuf[:size]
528528
// Now we need to check if the pointerBuf is an LFS pointer
529-
pointer := models.IsPointerFile(&pointerBuf)
529+
pointer := models.IsPointerFileAndStored(&pointerBuf)
530530
if pointer == nil {
531531
continue
532532
}

routers/repo/view.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ func renderDirectory(ctx *context.Context, treeLink string) {
273273

274274
// FIXME: what happens when README file is an image?
275275
if isTextFile && setting.LFS.StartServer {
276-
meta := models.IsPointerFile(&buf)
276+
meta := models.IsPointerFileAndStored(&buf)
277277
if meta != nil {
278278
meta, err = ctx.Repo.Repository.GetLFSMetaObjectByOid(meta.Oid)
279279
if err != nil && err != models.ErrLFSObjectNotExist {
@@ -399,7 +399,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
399399

400400
//Check for LFS meta file
401401
if isTextFile && setting.LFS.StartServer {
402-
meta := models.IsPointerFile(&buf)
402+
meta := models.IsPointerFileAndStored(&buf)
403403
if meta != nil {
404404
meta, err = ctx.Repo.Repository.GetLFSMetaObjectByOid(meta.Oid)
405405
if err != nil && err != models.ErrLFSObjectNotExist {

services/pull/lfs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func createLFSMetaObjectsFromCatFileBatch(catFileBatchReader *io.PipeReader, wg
100100
}
101101
pointerBuf = pointerBuf[:size]
102102
// Now we need to check if the pointerBuf is an LFS pointer
103-
pointer := models.IsPointerFile(&pointerBuf)
103+
pointer := models.IsPointerFileAndStored(&pointerBuf)
104104
if pointer == nil {
105105
continue
106106
}

templates/repo/migrate/git.tmpl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,21 @@
4646
{{end}}
4747
</div>
4848

49+
<div id="lfs_server_items">
50+
<div class="inline field">
51+
<label for="lfs_server">{{.i18n.Tr "repo.migrate_options_lfs_server"}}</label>
52+
<input id="lfs_server" name="lfs_server" value="{{.lfs_server}}" {{if .lfs}} required{{end}}>
53+
</div>
54+
55+
<div class="inline field">
56+
<label></label>
57+
<div class="ui checkbox">
58+
<input id="lfs_fetch_older" name="lfs_fetch_older" type="checkbox" {{if .lfs_fetch_older}} checked{{end}}>
59+
<label>{{.i18n.Tr "repo.migrate_options_lfs_fetch_older" | Safe}}</label>
60+
</div>
61+
</div>
62+
</div>
63+
4964
<div class="ui divider"></div>
5065

5166
<div class="inline required field {{if .Err_Owner}}error{{end}}">

templates/repo/migrate/gitea.tmpl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,21 @@
4343
{{end}}
4444
</div>
4545

46+
<div id="lfs_server_items">
47+
<div class="inline field">
48+
<label for="lfs_server">{{.i18n.Tr "repo.migrate_options_lfs_server"}}</label>
49+
<input id="lfs_server" name="lfs_server" value="{{.lfs_server}}" {{if .lfs}} required{{end}}>
50+
</div>
51+
52+
<div class="inline field">
53+
<label></label>
54+
<div class="ui checkbox">
55+
<input id="lfs_fetch_older" name="lfs_fetch_older" type="checkbox" {{if .lfs_fetch_older}} checked{{end}}>
56+
<label>{{.i18n.Tr "repo.migrate_options_lfs_fetch_older" | Safe}}</label>
57+
</div>
58+
</div>
59+
</div>
60+
4661
<span class="help">{{.i18n.Tr "repo.migrate.migrate_items_options"}}</span>
4762
<div id="migrate_items">
4863
<div class="inline field">

templates/repo/migrate/github.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
<div id="lfs_server_items">
4747
<div class="inline field">
4848
<label for="lfs_server">{{.i18n.Tr "repo.migrate_options_lfs_server"}}</label>
49-
<input id="lfs_server" name="lfs_server" value="{{.lfs_server}}">
49+
<input id="lfs_server" name="lfs_server" value="{{.lfs_server}}" {{if .lfs}} required{{end}}>
5050
</div>
5151

5252
<div class="inline field">

templates/repo/migrate/gitlab.tmpl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,21 @@
4343
{{end}}
4444
</div>
4545

46+
<div id="lfs_server_items">
47+
<div class="inline field">
48+
<label for="lfs_server">{{.i18n.Tr "repo.migrate_options_lfs_server"}}</label>
49+
<input id="lfs_server" name="lfs_server" value="{{.lfs_server}}" {{if .lfs}} required{{end}}>
50+
</div>
51+
52+
<div class="inline field">
53+
<label></label>
54+
<div class="ui checkbox">
55+
<input id="lfs_fetch_older" name="lfs_fetch_older" type="checkbox" {{if .lfs_fetch_older}} checked{{end}}>
56+
<label>{{.i18n.Tr "repo.migrate_options_lfs_fetch_older" | Safe}}</label>
57+
</div>
58+
</div>
59+
</div>
60+
4661
<span class="help">{{.i18n.Tr "repo.migrate.migrate_items_options"}}</span>
4762
<div id="migrate_items">
4863
<div class="inline field">

templates/swagger/v1_json.tmpl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14644,6 +14644,14 @@
1464414644
"type": "boolean",
1464514645
"x-go-name": "LFS"
1464614646
},
14647+
"lfs_fetch_older": {
14648+
"type": "boolean",
14649+
"x-go-name": "LFSFetchOlder"
14650+
},
14651+
"lfs_server": {
14652+
"type": "string",
14653+
"x-go-name": "LFSServer"
14654+
},
1464714655
"milestones": {
1464814656
"type": "boolean",
1464914657
"x-go-name": "Milestones"
@@ -14727,6 +14735,14 @@
1472714735
"type": "boolean",
1472814736
"x-go-name": "LFS"
1472914737
},
14738+
"lfs_fetch_older": {
14739+
"type": "boolean",
14740+
"x-go-name": "LFSFetchOlder"
14741+
},
14742+
"lfs_server": {
14743+
"type": "string",
14744+
"x-go-name": "LFSServer"
14745+
},
1473014746
"milestones": {
1473114747
"type": "boolean",
1473214748
"x-go-name": "Milestones"

0 commit comments

Comments
 (0)