git clone hangs within Azure DevOps build task - azure-devops

For some reason performing a git clone command within a Azure DevOps build pipeline always hangs. This includes git submodule update --init --recursive because I think in the background it simply calls git clone on the submodule's repo URL.
The parent repository and the submodules exist in "Azure Repos Git".
So the first phase in the build task is "Get sources" and within this phase i'm able to add command line tasks and call git tag, git branch, git commit, etc. But for some reason it hangs if I try to call git clone.
Seems like it doesn't want to communicate with any other repository other than the repository specified in the "Get sources" phase properties.
Is this a limitation?
Anyone know how I can get git clone to work in an Azure DevOps build task?
There are no errors, it simply hangs on any call to git clone.
My permissions look right:

It was right in front of my face. Under the Get sources properties, way at the bottom:
Here's documentation.

Related

how do i automatically pull code from master to fork in azure repos using azure devOps pipeline

I was trying to pull the code from master to fork repository automatically through the azure pipeline. If any one know about this?
If you fork azure repo and want to automatically sync the Fork repo using VSTS Git, please follow below steps.
Supposed the url of original repo is https://dev.azure.com/{organization}/{project}/_git/test, and the url of forked repo is https://dev.azure.com/{organization}/{project}/_git/test_fork.
If you click "Clone" button in test repository, you will see below panel.
Clicking "Generate Git Credentials" button will show the following panel.
So we can use command git remote add upstream https://username:password#dev.azure.com/{organization}/{project}/_git/test to specify it as the upstream of test_fork repo in script.
Now creating a build pipeline using Microsoft-hosted Windows agents, setting the test_fork as the source.
Adding the Command Line task with below script.
git remote add upstream https://username:password#dev.azure.com/{organization}/{project}/_git/test
git fetch upstream
git rebase upstream/master
git push -f origin HEAD:master
Queuing a new build and it will succeed to sync the test_fork repo using VSTS Git.
You can also configure schedules for this pipeline. Now everything is done.
If you use GitHub repo, please refer to this thread for guidance.

How to download code from a particular branch in AzureDevOps release pipeline

I need to download all the files from the feature branch in AzureDevOps release pipeline. I am using Azure repo. Is there any task in AzureDevOps classic editor for the same? How to implement this using Powershell?
[UPDATE]
In your release pipeline,
if a previous step in the same job will check out the source repository but not check out the feature branch, you can use the git checkout command to check out the feature branch to the local repository on the agent machine, and this command also will switch the current branch to feature in the local repository.
git checkout -b feature --track origin/feature
if no previous step to check out any source version from the repository, you can use the git clone command to only check out the the feature branch to the local.
git clone <Repo_URL> -b feature
You can use either Bash or PowerShell to execute these commands in your pipeline.

Is it possible to push to a new remote on VSTS git?

Is it possible to create a new VSTS Git remote repository from a Git client?
Right now, I have to go to visualstudio.com first to create the new repository before adding and pushing it from PC git, using the url created in VSTS.
I tried the following:
git remote add brandnew xx.visualstudio.com/PROJECT/_git/qqq
git push brandnew --all
where I am the owner of xx.visualstudio.com and PROJECT is an existing project, but qqq does not exist.
The above gives me:
remote: TF401019: The Git repository with name or identifier qqq does not exist or you do not have permissions for the operation you are attempting.
fatal: repository 'https://xx.visualstudio.com/PROJECT/_git/qqq/' not found
Yes, it's possible.
Even you can not create a VSTS git repo by git command line by default, but you can achieve it via git hooks.
And for the reason why you can create and publish new VSTS git repo via VS, it that VS will create the new VSTS git repo by API not by git commands.
So if you want achieve this feature in git command line, you can use pre-push hook for assistance. Functions need to achieve in pre-push hook as below:
Detect if the remote repo https://xx.visualstudio.com/PROJECT/_git/qqq exist or not.
If the repo is not exist in VSTS, then create by REST API.

On-premises GIT repository with Visual Studio Team Services Project

We have on-premises installed GIT. There we have our code repositories.
Is it possible to connect a repository from this on-premises instance to Visual studio team services project?
So they display under "Code" bar?
vsts
I need it hosted on premises, but see code changes/commits and other GIT stuff in VSTS project
No, it isn’t supported to display files or code of another repository under Code bar. You need to import that repository to the repository in VSTS. After that, you can push updates to VSTS repository if there are changes in your on-premises git repository.
You can't connect on premise GIT to VSTS. You may however use the VSTS rest APIs to push in code from your on premise GIT to VSTS.
Typically you will setup a hook/trigger on your on premise GIT repo in order to automate the replication process.
As others have said, you can have a "git hook", which is basically a git trigger to take action on some event. In this case, when code is pushed, to push it up to VSTS, but I assume you need to know the technical commands.
I had to do this the opposite way, and I did this quick and dirty. This pushes everything in one go, not each commit. This can also catch up a repo that is behind.
# Clone source repo (your local git repo)
git clone some_repo_path_goes_here
# I am skipping steps and assuming you are only syncing master branch.
# I have code to get all branches down before proceeding, but not posting it here.
# Assuming tags are on master branch..
# Get all tags
git fetch origin --tags
# Test to see if remote alias already exists
git ls-remote http://path_to_.visualstudio.com/org/project/_git/TargetRepoSameName
# Add a remote alias
git remote add any_name_123 http://path_to_.visualstudio.com/org/project/_git/TargetRepoSameName
# push local repo to 'any_name_123'
git push any_name_123 --all
# optional: delete all tags before attempting to push local tags
git push any_name_123 --delete `$(git tag -l)
# push local tags to remote repo
git push any_name_123 --tags
You can schedule this job if you would like. I have a PowerShell job to do this with a lot more functions to do pull down the branches.

Clone external git repository in release plan

We version our deployment configuration/scripts separately to our application, but haven't moved them across to VSTS. I know that Build Plans can pull in external git repositories, but the option doesn't appear to be there for linked artifacts in Release Plans. There also doesn't appear to be a "Clone Git Repository" task.
Any thoughts on what my choices might be?
There should have two options to achieve your requirement:
Create a Build Definition and use external git repositories in it, then link the Build Definition in Release Definition:
Although there is no "Clone Git Repository" task, you can use a Command Line task to call git clone command: