---
layout: default
menu_item: api
title: Packbuilder
description: Version 0.19.0
menu_item: api
return_to:
"API Documentation Index": /api/
sections:
"create": "#create"
"#free": "#free"
"#hash": "#hash"
"#insert": "#insert"
"#insertCommit": "#insertCommit"
"#insertRecur": "#insertRecur"
"#insertTree": "#insertTree"
"#insertWalk": "#insertWalk"
"#objectCount": "#objectCount"
"#setThreads": "#setThreads"
"#written": "#written"
"STAGE": "#STAGE"
---
## Packbuilder.create Sync
```js
var packbuilder = Packbuilder.create(repo);
```
| Parameters | Type | |
| --- | --- | --- |
| repo | [Repository](/api/repository/) | The repository |
| Returns | |
| --- | --- |
| [Packbuilder](/api/packbuilder/) | The new packbuilder object |
## Packbuilder#free Sync
```js
packbuilder.free();
```
## Packbuilder#hash Sync
```js
var oid = packbuilder.hash();
```
| Returns | |
| --- | --- |
| [Oid](/api/oid/) | |
## Packbuilder#insert Sync
```js
var result = packbuilder.insert(id, name);
```
| Parameters | Type |
| --- | --- | --- |
| id | [Oid](/api/oid/) | The oid of the commit |
| name | String | The name; might be NULL |
| Returns | |
| --- | --- |
| Number | 0 or an error code |
## Packbuilder#insertCommit Sync
```js
var result = packbuilder.insertCommit(id);
```
| Parameters | Type |
| --- | --- | --- |
| id | [Oid](/api/oid/) | The oid of the commit |
| Returns | |
| --- | --- |
| Number | 0 or an error code |
## Packbuilder#insertRecur Sync
```js
var result = packbuilder.insertRecur(id, name);
```
| Parameters | Type |
| --- | --- | --- |
| id | [Oid](/api/oid/) | the id of the root object to insert |
| name | String | optional name for the object |
| Returns | |
| --- | --- |
| Number | 0 or an error code |
## Packbuilder#insertTree Sync
```js
var result = packbuilder.insertTree(id);
```
| Parameters | Type |
| --- | --- | --- |
| id | [Oid](/api/oid/) | The oid of the root tree |
| Returns | |
| --- | --- |
| Number | 0 or an error code |
## Packbuilder#insertWalk Sync
```js
var result = packbuilder.insertWalk(walk);
```
| Parameters | Type |
| --- | --- | --- |
| walk | [Revwalk](/api/revwalk/) | the revwalk to use to fill the packbuilder |
| Returns | |
| --- | --- |
| Number | 0 or an error code |
## Packbuilder#objectCount Sync
```js
var result = packbuilder.objectCount();
```
| Returns | |
| --- | --- |
| Number | the number of objects in the packfile |
## Packbuilder#setThreads Sync
```js
var result = packbuilder.setThreads(n);
```
| Parameters | Type |
| --- | --- | --- |
| n | Number | Number of threads to spawn |
| Returns | |
| --- | --- |
| Number | number of actual threads to be used |
## Packbuilder#written Sync
```js
var result = packbuilder.written();
```
| Returns | |
| --- | --- |
| Number | the number of objects which have already been written |
## Packbuilder.STAGE ENUM
| Flag | Value |
| --- | --- | --- |
| Packbuilder.STAGE.ADDING_OBJECTS | 0 |
| Packbuilder.STAGE.DELTAFICATION | 1 |