選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

setup_filestore.mkd 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. ## Configure Git Large File Storage
  2. Gitblit provides a filestore that supports the [Git Large File Storage (LFS) API](https://git-lfs.github.com/).
  3. ### Server Configuration
  4. Gitblit is configured to work straight away. However you may want to update the following in `gitblit.properties`:
  5. <table class="table">
  6. <thead>
  7. <tr><th>parameter</th><th>value</th><th>description</th></tr>
  8. </thead>
  9. <tbody>
  10. <tr>
  11. <th>filestore.storageFolder</th><td>${baseFolder}/lfs</td>
  12. <td>The path on the server where filestore objects are to be saved.</td>
  13. </tr>
  14. <tr>
  15. <th>filestore.maxUploadSize</th><td>-1</td>
  16. <td>The maximum allowable size that can be uploaded to the filestore. Once a file is uploaded it will be unaffected by later changes in this property. The default of -1 indicates no limits.</td>
  17. </tr>
  18. </tbody>
  19. </table>
  20. ### Limitations
  21. Gitblit currently provides a server-only implementation of the opensource Git LFS API.
  22. 1. Files in the filestore are not currently searchable by Lucene.
  23. 2. Mirroring a repository that uses Git LFS will only mirror the pointer files, not the large files.
  24. 3. Federation - Only the pointer files, not the large files, are transfered.
  25. Items 2 & 3 are pending [JGit Git LFS client capabilities](https://bugs.eclipse.org/bugs/show_bug.cgi?id=470333).
  26. ### How does it work?
  27. 1. Files that should be handled by Git LFS are defined in the `.gitattributes` file.
  28. 2. Git LFS installs a pre-commit hook when installed `git lfs install`.
  29. 3. When a commit is made the pre-commit hook replaces the defined Git LFS files with a pointer file containing metadata about the file so that it can be found later.
  30. 4. When a commit is pushed, the changeset is sent to the git repository and the large files are sent to the filestore.
  31. For further details check out the [Git LFS specification](https://github.com/github/git-lfs/blob/master/docs/spec.md).
  32. ### Convert/Migrate existing repository
  33. It is possible to migrate an existing repository containing large files to one that leverages the filestore. However, commit hash history will be altered.
  34. The following command may be run on a local repository:
  35. git filter-branch --prune-empty --tree-filter '
  36. git lfs track "*.docx" "*.pdf" > /dev/null
  37. git add .gitattributes
  38. git ls-files | xargs -d "\n" git check-attr filter | grep "filter: lfs" | sed -r "s/(.*): filter: lfs/\1/" | xargs -d "\n" -r bash -c "git rm -f --cached \"\$@\"; git add \"\$@\"" bash \
  39. ' --tag-name-filter cat -- --all
  40. ### Further Considerations
  41. While [other Git LFS implementations are available](https://github.com/github/git-lfs/wiki/Implementations) as there is no current [JGit LFS client capability](https://bugs.eclipse.org/bugs/show_bug.cgi?id=470333), Gitblit will be unable to access them.