[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [egit-dev] Query on getting information of the list of files commited

ah yeah, you should call walk.release() when finished :)

On 07/09/2012 02:54 PM, Markus Duft wrote:
> i use something like that (copy & pasted together, so it won't compile, i'm sure ;)):
> 
>     /**
>      * Retrieve a list of all changed files in a commit (based on a event).
>      */
>     public Map<String, FileMode> getChangedFiles(String commit) {
>         Map<String, FileMode> result = new TreeMap<String, FileMode>();
>         try {
>             TreeWalk walk = createTreeWalk(getCommit(commit));
> 
>             while (walk.next()) {
>                 result.put(walk.getPathString(), walk.getFileMode(1));
>             }
>         } catch (Exception ex) {
>             log.error("failed to get files for " + e, ex);
>         }
>         return result;
>     }
> 
>     /**
>      * Create a new TreeWalk which can be used to find file-related info for a given commit
>      */
>     public TreeWalk createTreeWalk(RevCommit commit) throws Exception {
>         if (commit.getParentCount() != 1) {
>             throw new IllegalStateException("commit " + commit + " has not exactly one parent!");
>         }
> 
>         // since the actual commit is added as second tree, from now on, index '1' refers to the
>         // actual commit.
>         TreeWalk walk = new TreeWalk(repo);
>         walk.setFilter(TreeFilter.ANY_DIFF);
>         walk.reset(commit.getParent(0).getTree(), commit.getTree());
>         walk.setRecursive(true);
>         return walk;
>     }
> 
>     /**
>      * Retrieves the commit object for the given rev string.
>      */
>     public RevCommit getCommit(String rev) {
>         try {
>             RevCommit ours = walk.parseCommit(getOidForRev(rev));
> 
>             // and as an extension, parse direct parents too. this is so the message is accessible later.
>             for (RevCommit c : ours.getParents()) {
>                 walk.parseCommit(c);
>             }
> 
>             return ours;
>         } catch (Exception ex) {
>             log.error("cannot find commit with id " + rev, ex);
>             return null;
>         }
>     }
> 
> i'm sure i missed something, but that should give an idea ;) (and: all you real experts, please feel free to correct my code :D)
> 
> Regards,
> Markus
> 
> On 07/09/2012 02:47 PM, Rahul Chandrashekar (RBEI/EMT2) wrote:
>> Dear All,
>>  
>> I have a query, how do i get the list of files from eGit which are commited into the GIT repository.
>>  
>> Please let know your feedback for the same.
>>  
>> Mit freundlichen Grüßen / Best Regards,
>> *Rahul Chandrashekar*
>>  
>> Robert Bosch Engineering and Business Solutions Limited
>> Engineering Methods and Tools (RBEI\EMT2)
>> 123, Industrial Layout, Hosur Road, Koramangala,
>> Bangalore – 560 095
>> INDIA
>> _www.bosch.com_ <http://www.bosch.com/>
>>  
>> Tel. +91 80 6657 1661
>> VoIp. +49(711)811-3615170
>> Mobile +91 9886944213
>> _rahul.chandrashekar@xxxxxxxxxxxxx
>>  
>>  
>>  
>>
>>
>> _______________________________________________
>> egit-dev mailing list
>> egit-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/egit-dev
>>
> 
> _______________________________________________
> egit-dev mailing list
> egit-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/egit-dev
>