org.eclipse.jgit.submodule
Class SubmoduleWalk

java.lang.Object
  extended by org.eclipse.jgit.submodule.SubmoduleWalk

public class SubmoduleWalk
extends Object

Walker that visits all submodule entries found in a tree


Constructor Summary
SubmoduleWalk(Repository repository)
          Create submodule generator
 
Method Summary
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.



Copyright © 2013. All Rights Reserved.