Clone a Git repo using Flutter/Dart - flutter

I want to do a Process.start('cmd', ['/c', 'git', 'clone', repoLink, selectedDirectory]) in flutter/dart.
My target directory is not empty because when I do a normal git clone, it creates a new folder with the name of the repo an clone inside that.
but when I pass the target folder to git clone command, it raise an error:
fatal: destination path 'd:\w' already exists and is not an empty directory.
And when i get the repo name and make a directory and add it to selectedDirectory, it would create another folder inside that with the exact same name.like: D:\w\repoName\repoName\[repo files]
So, how can I properly clone a git repo using Process in flutter?
More information:
My target directory is like:
D:\w\
project1\
project2\
...
In a normal clone case, you can simply cd to the target directory D:\w and do a git clone <repo link> while the target directory can be not empty.
but when you want to clone that repo while I am in a different path, git gives fatal error:
// git clone <repo-link> <target_folder>
C:\> git clone https://github.com/uesr/repo.git d:\w
fatal: destination path 'd:\w' already exists and is not an empty directory.
I have tried to get the repo name and make a directory and add it to selectedDirectory, but doing that, git clone will create another folder with the repo name.
I want to clone into d:/w/repoName/[repo files]
I would like to do this using Process and work with the actual git software that is installed on the machine.

I could do it using this process:
Process.start('cmd', ['/c', 'cd', selectedDirectory, '&', 'git', 'clone', repoLink])
I could not add multiple lines to execute after each other but you can use & to do so for one line commands.

Related

Uploading project on GITHUB not open the code files [duplicate]

I have recently pushed to github, and see a white arrow on one of my folders.
and when i click on the folder, it does not open it. On my local machine, it has contents, but in github i cannot access them. What does this mean?
Symptom
Check if locally you have a .git/ sub-folder under that folder.
Cause
That would mean the folder (locally) is a nested Git repository, whose tree SHA1 is recorded as a "gitlink" (gray folder with straight white arrow)
What you would then see on GitHub is that gitlink: SHA-1 of the object refers to a commit in another repository, represented by an empty folder name. It is a nested Git repository.
If you see a folder # xxx, then it is a submodule entry, meaning your own repository has a .gitmodules in it, which records, in addition of the gitlink, the actual URL of the remote repository.
It represents the object name of the commit that the super-project expects the nested submodule's working directory to be at.
In both cases (white arrow with a folder name, or white arrow with folder # xxx, folder name and version), it is a Gitlink represented a nested Git repository: a placeholder for another Git repository, hence an empty folder. But in the second case, that empty folder would be referenced/visible in a special .gitmodules file.
Solution (to remove the white arrow)
In order to restore that folder content:
submodule:
A git clone --recurse-submodules would restore the content of that submodule in your local repository (as opposed to a nested Git repo, where its URL is not recorded, and the content of the folder would remain empty)
The white arrow would remain on the remote repository, with folder # version displaying what SHA1 of the submodule repository is referenced by your project.
Nested Git repository:
Alternatively, you could, if you don't care about the history of that folder, delete locally its .git subfolder (assuming it is not a submodule, meaning it is not referenced in a .gitmodules file in your main repository), add, commit and push.
The white arrow would then disappear, and you would be able to access that folder content on GitHub.
Then you would need to delete the gitlink entry:
git rm --cache client_folder
# without a trailing slash:
# not client_folder/ but client_folder
Finally, you can add, commit and push that folder content.
The arrow may mean that is a submodule.
You could try:
git add yourfolder
If that results in an error like:
xxx submodule xxx
appears, you may try this:
git rm --cached yourfolder
Then, you could successfully run:
git add yourfolder
On your machine, if you navigated to the directory with the arrow and tried to view hidden files, you'd see a .git folder, indicating that it is a repository. This means that it is a repo contained inside the outer repo that you had pushed to GitHub.
The easiest way to get rid of the arrow and start seeing your files properly (in my opinion) is by deleting the .git folder. That way, it ceases to become a git repo and is a regular folder once more.
Now when you push to GitHub, you can normally access the folder and view all its contents.
If you want to remove a submodule from the git config files, Follow this, remember that if you DON'T want to delete the local directory of that submodule, DON'T do Step X:
Delete the relevant section from the .gitmodules file.
Stage the .gitmodules changes git add .gitmodules
Delete the relevant section from .git/config.
Run git rm --cached path_to_submodule (no trailing slash).
Run rm -rf .git/modules/path_to_submodule (no trailing slash).
Commit git commit -m "Removed submodule "
(Risky)Step X :- Delete the now untracked submodule files rm -rf path_to_submodule
In my case:
git rm --cached portal
ls
git status
git add --all
...
for me, the history of changes in the subfolders were no longer important
start by removing .git from the subfolder
git rm --cached myfolder
git add myfolder
git commit -m "making myfolder available"
git push
It's due to the .git file in some of your subfolders. If you cannot find it then follow these steps....
Click file option Click this image - 1
Go to Preferences , then click settings Click this image - 2
Look for text editor, then click files Scroll down to check .git in Exclude
section. Click this image - 3
If .git is present, then remove it.
Now you will find .git folder in your main or sub folder....delete it and upload the folder to GitHub.
THIS WORKED FOR ME !!
Go to your project folder.
Go to "View" from the nav bar, go to "Show" and check "Hidden Items".
Delete all the ".git" folders from your project.
Initialize new or existing repo again and push your code.

vagrant-Git repository

I'm using vagrant to clone my git repository. I deleted my repository from GitHub my git account. now trying to clone a repository couldn't error message is destination path already exist. how do I delete this already existing path and start afresh?
Similar to this answer, you can:
test if a folder exist (File.directory?(directory))
delete it, using FileUtils.rmdir(disks_directory) (as used in this Vagrant script)

How to solve an error while cloning a github repository

I have a repository in github. But I can't clone it. Whenever I try to do so, it says.
fatal: destination path 'repo_name' already exists and is not an empty directory.
before anyone starts saying it is an empty repository, I'm saying it a repository which has files
any answer is appreciated
thank you
This message says that you already have a folder with your project name on the clone destination.
For instance if your GitHub URL is https://github.com/user/myProject.git, by default the clone command will try to create a directory named myProject.
Check the folders of your clone directory or change the name by doing :
git clone https://github.com/user/myProject.git MyNewFolderName

Creating new git repository, can't add directory

I am about to throw my laptop through a wall, and am hoping for help before reaching that point. For reference, I am following these instructions exactly - https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/.
I have a directory ".../path/thisdir". Inside of thisdir are (1) a file called Demo.R and (2) a directory called sportVU. sportVU is a directory with ~15 files in it.
When I follow the instructions in that link, my github repo looks like this:
https://github.com/NicholasCanova/packageSportVU
Notice that the sportVU directory link cannot be clicked in github, and when I download the repo, sportVU is an empty folder. Why is this happening? This shouldn't be so tough.
EDIT: this is what the repo looks like in my local machine, I'm 100% sure it's not empty:
It could be that you have two .git folder in your directory. View hidden folders to see.
Similar questions:
What does a grey icon in remote GitHub mean
Why can I not open my folder in GitHub?
Since Git doesn't store empty folders the steps you should follow exactly are:
Delete the old repo and start again following exactly my steps.
git clone <repo url>
Inside the folder of the cloned repo create a directory manually and name it as you want i.e sportVU.
Drag and Drop all the files you want in the sportVU direcrory.
cd to Myrepo/sportVU and type git add *
type git commit -m "added some files"
git push -u origin master.
and you should be all set

How to clone github repository to particular folder of hosting without Repository name?

I have my repository on git and it works fine. Repository name is say XXX. Now when i goto my hosting service by connection with SSH and try to clone code with "git clone URL" command in my public_html/ folder, it creates public_html/XXX/. Is there any way by which i can directly get my whole code at public_html/ ?
You could cut your files inside XXX along with the .git file and paste onto your public_html/ folder. Or simply put a . git clone URL .