org.eclipse.jgit.submodule

## Class SubmoduleWalk

- java.lang.Object
- - org.eclipse.jgit.submodule.SubmoduleWalk

    public class SubmoduleWalk
    extends Object

Walker that visits all submodule entries found in a tree

### Constructor Summary

Constructors
Constructor and Description
`SubmoduleWalk(Repository repository)` Create submodule generator

### Method Summary

Methods
`static SubmoduleWalk` `forIndex(Repository repository)` Create a generator to walk over the submodule entries currently in the index The `.gitmodules` file is read from the index.
`static SubmoduleWalk` `forPath(Repository repository, AbstractTreeIterator iterator, String path)` Create a generator and advance it to the submodule entry at the given path
`static SubmoduleWalk` `forPath(Repository repository, AnyObjectId treeId, String path)` Create a generator and advance it to the submodule entry at the given path
`String` `getConfigUpdate()` Get the configured update field for current entry.
`String` `getConfigUrl()` Get the configured remote URL for current entry.
`File` `getDirectory()` Get directory that will be the root of the submodule's local repository
`ObjectId` `getHead()` Get commit id that HEAD points to in the current submodule's repository
`String` `getHeadRef()` Get ref that HEAD points to in the current submodule's repository
`String` `getModulesPath()` Get the configured path for current entry.
`String` `getModulesUpdate()` Get the configured update field for current entry.
`String` `getModulesUrl()` Get the configured remote URL for current entry.
`ObjectId` `getObjectId()` Get object id of current submodule entry
`String` `getPath()` Get path of current submodule entry
`String` `getRemoteUrl()` Get the resolved remote URL for the current submodule.
`Repository` `getRepository()` Get repository for current submodule entry
`static File` `getSubmoduleDirectory(Repository parent, String path)` Get submodule directory
`static String` `getSubmoduleRemoteUrl(Repository parent, String url)` Resolve submodule repository URL.
`static Repository` `getSubmoduleRepository(File parent, String path)` Get submodule repository at path
`static Repository` `getSubmoduleRepository(Repository parent, String path)` Get submodule repository
`SubmoduleWalk` `loadModulesConfig()` Load the config for this walk from `.gitmodules`.
`boolean` `next()` Advance to next submodule in the index tree.
`void` `release()` Release any resources used by this walker's reader.
`SubmoduleWalk` `reset()` Reset generator and start new submodule walk
`SubmoduleWalk` `setFilter(TreeFilter filter)` Set tree filter
`SubmoduleWalk` `setModulesConfig(Config config)` Set the config used by this walk.
`SubmoduleWalk` `setRootTree(AbstractTreeIterator tree)` Set the tree used by this walk for finding `.gitmodules`.
`SubmoduleWalk` `setRootTree(AnyObjectId id)` Set the tree used by this walk for finding `.gitmodules`.
`SubmoduleWalk` `setTree(AbstractTreeIterator iterator)` Set the tree iterator used for finding submodule entries
`SubmoduleWalk` `setTree(AnyObjectId treeId)` Set the tree used for finding submodule entries

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### SubmoduleWalk

    public SubmoduleWalk(Repository repository)
                  throws IOException

Create submodule generator

Parameters:
  `repository` -
Throws:
  `IOException`

### Method Detail

#### forIndex

    public static SubmoduleWalk forIndex(Repository repository)
                                  throws IOException

Create a generator to walk over the submodule entries currently in the index The `.gitmodules` file is read from the index.

Parameters:
  `repository` -
Returns:
  generator over submodule index entries
Throws:
  `IOException`

#### forPath

    public static SubmoduleWalk forPath(Repository repository,
                        AnyObjectId treeId,
                        String path)
                                 throws IOException

Create a generator and advance it to the submodule entry at the given path

Parameters:
  `repository` -
  `treeId` - the root of a tree containing both a submodule at the given path and .gitmodules at the root.
  `path` -
Returns:
  generator at given path, null if no submodule at given path
Throws:
  `IOException`

#### forPath

    public static SubmoduleWalk forPath(Repository repository,
                        AbstractTreeIterator iterator,
                        String path)
                                 throws IOException

Create a generator and advance it to the submodule entry at the given path

Parameters:
  `repository` -
  `iterator` - the root of a tree containing both a submodule at the given path and .gitmodules at the root.
  `path` -
Returns:
  generator at given path, null if no submodule at given path
Throws:
  `IOException`

#### getSubmoduleDirectory

    public static File getSubmoduleDirectory(Repository parent,
                             String path)

Get submodule directory

Parameters:
  `parent` -
  `path` -
Returns:
  directory

#### getSubmoduleRepository

    public static Repository getSubmoduleRepository(Repository parent,
                                    String path)
                                             throws IOException

Get submodule repository

Parameters:
  `parent` -
  `path` -
Returns:
  repository or null if repository doesn't exist
Throws:
  `IOException`

#### getSubmoduleRepository

    public static Repository getSubmoduleRepository(File parent,
                                    String path)
                                             throws IOException

Get submodule repository at path

Parameters:
  `parent` -
  `path` -
Returns:
  repository or null if repository doesn't exist
Throws:
  `IOException`

#### getSubmoduleRemoteUrl

    public static String getSubmoduleRemoteUrl(Repository parent,
                               String url)
                                        throws IOException

Resolve submodule repository URL.

This handles relative URLs that are typically specified in the '.gitmodules' file by resolving them against the remote URL of the parent repository.

Relative URLs will be resolved against the parent repository's working directory if the parent repository has no configured remote URL.

Parameters:
  `parent` - parent repository
  `url` - absolute or relative URL of the submodule repository
Returns:
  resolved URL
Throws:
  `IOException`

#### setModulesConfig

    public SubmoduleWalk setModulesConfig(Config config)

Set the config used by this walk. This method need only be called if constructing a walk manually instead of with one of the static factory methods above.

Parameters:
  `config` - .gitmodules config object
Returns:
  this generator

#### setRootTree

    public SubmoduleWalk setRootTree(AbstractTreeIterator tree)

Set the tree used by this walk for finding `.gitmodules`.

The root tree is not read until the first submodule is encountered by the walk.

This method need only be called if constructing a walk manually instead of with one of the static factory methods above.

Parameters:
  `tree` - tree containing .gitmodules
Returns:
  this generator

#### setRootTree

    public SubmoduleWalk setRootTree(AnyObjectId id)
                              throws IOException

Set the tree used by this walk for finding `.gitmodules`.

The root tree is not read until the first submodule is encountered by the walk.

This method need only be called if constructing a walk manually instead of with one of the static factory methods above.

Parameters:
  `id` - ID of a tree containing .gitmodules
Returns:
  this generator
Throws:
  `IOException`

#### loadModulesConfig

    public SubmoduleWalk loadModulesConfig()
                                    throws IOException,
                                           ConfigInvalidException

Load the config for this walk from `.gitmodules`.

Uses the root tree if `setRootTree(AbstractTreeIterator)` was previously called, otherwise uses the working tree.

If no submodule config is found, loads an empty config.

Returns:
  this generator
Throws:
  `IOException` - if an error occurred, or if the repository is bare
  `ConfigInvalidException`

#### setFilter

    public SubmoduleWalk setFilter(TreeFilter filter)

Set tree filter

Parameters:
  `filter` -
Returns:
  this generator

#### setTree

    public SubmoduleWalk setTree(AbstractTreeIterator iterator)
                          throws CorruptObjectException

Set the tree iterator used for finding submodule entries

Parameters:
  `iterator` -
Returns:
  this generator
Throws:
  `CorruptObjectException`

#### setTree

    public SubmoduleWalk setTree(AnyObjectId treeId)
                          throws IOException

Set the tree used for finding submodule entries

Parameters:
  `treeId` -
Returns:
  this generator
Throws:
  `IOException`
  `IncorrectObjectTypeException`
  `MissingObjectException`

#### reset

    public SubmoduleWalk reset()

Reset generator and start new submodule walk

Returns:
  this generator

#### getDirectory

    public File getDirectory()

Get directory that will be the root of the submodule's local repository

Returns:
  submodule repository directory

#### next

    public boolean next()
                 throws IOException

Advance to next submodule in the index tree. The object id and path of the next entry can be obtained by calling `getObjectId()` and `getPath()`.

Returns:
  true if entry found, false otherwise
Throws:
  `IOException`

#### getPath

    public String getPath()

Get path of current submodule entry

Returns:
  path

#### getObjectId

    public ObjectId getObjectId()

Get object id of current submodule entry

Returns:
  object id

#### getModulesPath

    public String getModulesPath()
                          throws IOException,
                                 ConfigInvalidException

Get the configured path for current entry. This will be the value from the .gitmodules file in the current repository's working tree.

Returns:
  configured path
Throws:
  `ConfigInvalidException`
  `IOException`

#### getConfigUrl

    public String getConfigUrl()
                        throws IOException,
                               ConfigInvalidException

Get the configured remote URL for current entry. This will be the value from the repository's config.

Returns:
  configured URL
Throws:
  `ConfigInvalidException`
  `IOException`

#### getModulesUrl

    public String getModulesUrl()
                         throws IOException,
                                ConfigInvalidException

Get the configured remote URL for current entry. This will be the value from the .gitmodules file in the current repository's working tree.

Returns:
  configured URL
Throws:
  `ConfigInvalidException`
  `IOException`

#### getConfigUpdate

    public String getConfigUpdate()
                           throws IOException,
                                  ConfigInvalidException

Get the configured update field for current entry. This will be the value from the repository's config.

Returns:
  update value
Throws:
  `ConfigInvalidException`
  `IOException`

#### getModulesUpdate

    public String getModulesUpdate()
                            throws IOException,
                                   ConfigInvalidException

Get the configured update field for current entry. This will be the value from the .gitmodules file in the current repository's working tree.

Returns:
  update value
Throws:
  `ConfigInvalidException`
  `IOException`

#### getRepository

    public Repository getRepository()
                             throws IOException

Get repository for current submodule entry

Returns:
  repository or null if non-existent
Throws:
  `IOException`

#### getHead

    public ObjectId getHead()
                     throws IOException

Get commit id that HEAD points to in the current submodule's repository

Returns:
  object id of HEAD reference
Throws:
  `IOException`

#### getHeadRef

    public String getHeadRef()
                      throws IOException

Get ref that HEAD points to in the current submodule's repository

Returns:
  ref name, null on failures
Throws:
  `IOException`

#### getRemoteUrl

    public String getRemoteUrl()
                        throws IOException,
                               ConfigInvalidException

Get the resolved remote URL for the current submodule.

This method resolves the value of `getModulesUrl()` to an absolute URL

Returns:
  resolved remote URL
Throws:
  `IOException`
  `ConfigInvalidException`

#### release

    public void release()

Release any resources used by this walker's reader.